o
    6Hf                     @   s   d dl mZ d dlmZ d dlmZ d dlZd dlZd dlm	Z	 d dl
Z
d dlZd dlmZ d dlmZ h dZd	d
 ZdddZdd Zdd ZdddZdddZdd ZdS )    jsonify)Image)BytesION)YOLO)secure_filename)trans>   gifjpgpngjpegwebpc                 C   s    d| v o|  ddd  tv S )N.   )rsplitlowerALLOWED_EXTENSIONS)filename r   !/var/www/html/face-recog/utils.pyallowed_file   s   r   Fc                 C   s   | ||d}t |S )N)messagesstatusresultr   )r   r   r   responser   r   r   response_formatter   s
   r   c                 C   s6   t | } | jddd}t }|j|dd t|S )NZ   T)expandJPEG)format)r   openrotater   saveface_recognitionload_image_file)imagerotated_imagebufferedr   r   r   rotate_image   s
   

r(   c                 C   s"   t | t j}t|  | S )N)cv2cvtColorCOLOR_BGR2GRAYprintmean)r%   grayr   r   r   calculate_brightness!   s   r/    N    enc                 C   s  |d \}}}}|| }	|| }
||	d  }||
d  }| j d | j d }}t| tj}|||||f }t|tj }||k rOt| d dddS |	|
 |k r_t| d dddS ||d	 kr||d
 kr||d	 kr||d
 krt| d dddS t| d dddS )Nr      r   failed_blurfailedFmessager   r   failed_area皙?333333?registration_successfulsuccessTface_positionshaper)   r*   r+   	LaplacianCV_64Fvarr   loaded_imageface_locationsmin_wide_face_arealaplacian_thresoldlangtoprightbottomleftwidthheightcenter_xcenter_yimage_widthimage_heightgrayscale_image	face_area	laplacianr   r   r   	face_eval&   "   rV   c                 C   s  |d \}}}}|| }	|| }
||	d  }||
d  }| j d | j d }}t| tj}|||||f }t|tj }||k rOt| d dddS |	|
 |k r_t| d	 dddS ||d
 kr||d kr||d
 kr||d krt| d dddS t| d dddS )Nr   r3   g      ?r   r4   r5   Fr6   r8   r9   r:   r;   r<   Tr=   r>   rC   r   r   r   face_eval_regis>   rW   rX   c           
      C   s   d}t t d t|j }tj| |}|| t	d}|j
|dd}|d }|jD ]}t|jd  d}	|	dkrAd} nq-t| |S )	NF_z	custom.pt)verboser   r3   g      ?T)struuiduuid4r   r   ospathjoinr"   r   predictboxesroundconfitemremove)
folder_pathresourcer   unique_filenamer_   modeldetectsdetectboxrd   r   r   r   rl   V   s   


rl   )F)r0   r1   r2   )flaskr   PILr   ior   r#   r)   ultralyticsr   r^   r\   werkzeug.utilsr   translationsr   r   r   r   r(   r/   rV   rX   rl   r   r   r   r   <module>   s$    


