o
    0j"                     @   sx   d dl Z d dlmZ d dlZddlmZ G dd deZG dd deZ	G d	d
 d
eZ
ejdddG dd dZdS )    N)Generic   )	benchmarkc                       s4   e Zd Zdef fddZdedefddZ  ZS )	_EasyDictkeyc                    s   || v r| | S t  | |S N)super__getattr__)selfr   	__class__ n/var/www/html/Deteccion_Ine/venv/lib/python3.10/site-packages/paddlex/inference/common/reader/det_3d_reader.pyr	      s   z_EasyDict.__getattr__valuec                 C   s   || |< d S r   r   )r
   r   r   r   r   r   __setattr__   s   z_EasyDict.__setattr__)__name__
__module____qualname__strr	   r   r   __classcell__r   r   r   r   r      s    r   c                   @   s   e Zd Zg dZdd ZdS )
SampleMeta)Zcamera_intrinsicZimage_formatZimage_readerZchannel_orderidZtime_lagZref_from_currc                 K   s"   |  D ]
\}}t| || qd S r   )itemssetattr)r
   kwargsr   r   r   r   r   __init__3   s   zSampleMeta.__init__N)r   r   r   	__slots__r   r   r   r   r   r   !   s    r   c                   @   s*   e Zd ZdZg dZdedefddZdS )Samplez1Data structure containing sample data information)imagelidarZradar
multimodal	multiviewpathmodalityc                 C   s\   || j vrtd| j |t | _|| _d | _| | _d | _	d | _
d | _g | _d | _d S )Nz)Only modality {} is supported, but got {})_VALID_MODALITIES
ValueErrorformatr   metar"   datalowerr#   Z	bboxes_2dZ	bboxes_3dlabelssweepsattrs)r
   r"   r#   r   r   r   r   =   s   


zSample.__init__N)r   r   r   __doc__r$   r   r   r   r   r   r   r   8   s    r   T)nameZis_read_operationc                   @   sJ   e Zd Zddddddgdddfd	d
Zdd Zdd Zdd Zdd ZdS )ReadNuscenesData    cameraFr   Zdiscreter    singlec	           	      C   sH   || _ d | _|| _|| _|d | _|d | _|| _|| _|| _|| _	d S )Nr   r1   )
load_interval
noise_datanoise_sensor_typedrop_frames
drop_ratio	drop_typer#   extrinsics_noiseextrinsics_noise_typedataset_root)	r
   r<   r4   r6   r7   Zdrop_setr#   r:   r;   r   r   r   r   V   s   


zReadNuscenesData.__init__c                 C   s  t d| jd}|d |_|d |j_tj| j|d |_	|d |_
|d d |_| jdkr| jr|j	}|d	d
 }| j| d d | j | j d r| j| d d | j | j d }|dkr|||}||_	| j| d d |_
| j| d d d |_g d}| jdks| jdkrsg }g }g }	|D ]}
|d |
 }|d }tj| j|}|d	d
 }| jdkr| jr| j| d d | j | j d r| j| d d | j | j d }|dkr|||}|| | jr| j| d d | j d }| j| d d | j d }n|d }|d }tj|}||j }td}|j|ddddf< | |dddf< |d }td}||d|jd d|jd  f< ||j }|| |	|||d d! q|t|||	d" |S )#a  Get data info.

        Returns:
            dict: Data information that will be passed to the data                 preprocessing pipelines. It includes the following keys:

                - sample_idx (str): Sample index.
                - pts_filename (str): Filename of point clouds.
                - sweeps (list[dict]): Infos of sweeps.
                - timestamp (float): Sample timestamp.
                - img_filename (str, optional): Image filename.
                - lidar2img (list[np.ndarray], optional): Transformations                     from lidar to different cameras.
                - ann_info (dict): Annotation info.
        N)r"   r#   tokenZ
lidar_pathr+   	timestampg    .Ar   /noiser7   Zstuckreplacer0   Z
mmdet_info)ZCAM_FRONT_LEFTZ	CAM_FRONTZCAM_FRONT_RIGHTZCAM_BACK_RIGHTZCAM_BACKZCAM_BACK_LEFTr!   r    ZcamsZ	data_pathr2   r:   Z_noise_sensor2lidar_rotationZ_noise_sensor2lidar_translationsensor2lidar_rotationsensor2lidar_translation   r   cam_intrinsicr   r1   )rD   rC   rF   )Zimg_filenameZ	lidar2imgZcaminfo)r   r#   Z
sample_idxr'   r   osr"   joinr<   pts_filenamer+   r>   r6   r7   splitr5   r8   r9   rB   appendr:   r;   npZlinalginvTeyeshapeupdatedict)r
   infosamplerI   	file_nameZreplace_fileZ
cam_ordersZimage_pathsZlidar2img_rtsZcaminfosZcam_typeZcam_infoZcam_data_pathrC   rD   Zlidar2cam_rZlidar2cam_tZlidar2cam_rtZ	intrinsicZviewpadZlidar2img_rtr   r   r   get_data_infom   s   









 

zReadNuscenesData.get_data_infoc                 C   s   |  |}| |}|S r   )rV   add_new_fields)r
   rS   rT   r   r   r   prepare_test_data   s   

z"ReadNuscenesData.prepare_test_datac                 C   s<   g |d< g |d< g |d< g |d< g |d< g |d< g |d< |S )NZ
img_fieldsZbbox3d_fieldsZpts_mask_fieldsZpts_seg_fieldsZbbox_fieldsZmask_fieldsZ
seg_fieldsr   )r
   rT   r   r   r   rW      s   zReadNuscenesData.add_new_fieldsc                    s    fdd|D S )Nc                    s   g | ]}  |qS r   )rX   ).0	data_infor
   r   r   
<listcomp>   s    z-ReadNuscenesData.__call__.<locals>.<listcomp>r   )r
   Z
batch_datar   r[   r   __call__   s   zReadNuscenesData.__call__N)r   r   r   r   rV   rX   rW   r]   r   r   r   r   r/   S   s    
t
r/   )rG   typingr   numpyrL   Zutils.benchmarkr   rR   r   r   r   Ztimeit_with_optionsr/   r   r   r   r   <module>   s   
