o
    e                  	   @   s  d dl Z d dlZd dlmZ e je jeZej	d e ej	d e je j
ed de jd< d dlZd dlZd dlZd dlZd dlZd dlZd dlm  mZ d dlmZ d dlmZ d dlmZmZ e ZG d	d
 d
eZdd Z e!dkre e"  dS dS )    N)Imagez../..Zauto_growthZFLAGS_allocator_strategy)build_post_process)
get_logger)get_image_file_listcheck_and_readc                   @   s$   e Zd Zdd Zdd Zdd ZdS )TextSRc                 C   s   dd |j dD | _ |j| _t|dt\| _| _| _| _	|j
| _
|j
rPdd l}t }t }|jd|j|jdd | j	|d |jrD|nd g ddtd| _d S d S )	Nc                 S   s   g | ]}t |qS  )int).0vr   r   PD:\Projects\ConvertPro\env\Lib\site-packages\paddleocr/tools/infer/predict_sr.py
<listcomp>(   s    z#TextSR.__init__.<locals>.<listcomp>,srr   Zdynamic)Zpreprocess_timeZinference_timeZpostprocess_time)Z
model_nameZmodel_precisionZ
batch_sizeZ
data_shapeZ	save_pathZinference_configZpidsZprocess_nameZgpu_idsZ	time_keyswarmuplogger)sr_image_shapesplitsr_batch_numutilityZcreate_predictorr   	predictorinput_tensoroutput_tensorsconfig	benchmarkauto_logosgetpidZget_infer_gpuidZ
AutoLogger	precisionZuse_gpuautolog)selfargsr   pidZgpu_idr   r   r   __init__'   s0   zTextSR.__init__c                 C   sH   | j \}}}||d |d ftj}t|d}|dd }|S )N   Zfloat32)r$   r         )r   resizer   ZBICUBICnparrayastype	transpose)r    imgimgCimgHimgWZ	img_numpyr   r   r   resize_norm_imgB   s
   zTextSR.resize_norm_imgc                 C   sH  t |}| j}t }t }g | }| jr| jj  td||D ]n}t||| }g }| j	\}	}
}t||D ]}| 
|| }|tjd d f }|| q8t|}| }| jrb| jj  | j| | j  g }| jD ]}| }|| qrt |dkr|}n|d }|| q"| jr| jjjdd |t | fS )Nr   r%   T)stamp)lenr   timer   r   timesstartrangeminr   r0   r(   ZnewaxisappendZconcatenatecopyr1   r   Zcopy_from_cpur   runr   Zcopy_to_cpuend)r    img_listZimg_numZ	batch_numstZ
all_resultZ
beg_img_noZ
end_img_noZnorm_img_batchr-   r.   r/   inoZnorm_imgZoutputsZoutput_tensoroutputpredsr   r   r   __call__I   s@   


zTextSR.__call__N)__name__
__module____qualname__r#   r0   rA   r   r   r   r   r   &   s    r   c                 C   s  t | j}t| }g }g }| jr/tjddg dtj}t	dD ]}||gt
| j }q"|D ]*}t|\}}	}
|	sDt|d}|d u rQtd| q1|| || q1zq||\}}
t	t|D ]b}|| d }|| d }t	|jd D ]L}|| d dddtj}|| d dddtj}tj||| j |  d }td	||d d d d d d df  td
| q~qiW n! ty } ztt  t| t  W Y d }~nd }~ww | j r|j!"  d S d S )Nr   r&   )   @      r$   RGBzerror in loading image:{}r%   zinfer_result/sr_{}z0The visualized image saved in infer_result/sr_{})#r   Z	image_dirr   r   r(   randomuniformr*   Zuint8r6   r	   r   r   r   openconvertr   infoformatr8   r2   shaper+   r   pathr   cv2Zimwrite	Exception	traceback
format_excexitr   r   report)r!   Zimage_file_listZtext_recognizerZvalid_image_file_listr<   r,   iresZ
image_fileflag_r@   Zbeg_noZsr_imgZlr_imgZfm_srZfm_lrZimg_name_pureEr   r   r   mainn   s^   


r]   __main__)#r   sysZPILr   rQ   dirnameabspath__file____dir__insertjoinenvironrR   numpyr(   mathr3   rT   ZpaddleZtools.infer.utilityZinferr   Zppocr.postprocessr   Zppocr.utils.loggingr   Zppocr.utils.utilityr   r   r   objectr   r]   rB   
parse_argsr   r   r   r   <module>   s.    
H,