Team Ai
Apppublic

Explicite/api-test

sourceHugging Faceupdated 8mo agoView on Hugging Face
0likes
face_service.cpython-311.pyc60 linesDownload Raw Back to __pycache__
1�

2g�id����ddlmZddlZddlmZddlZddlmZmZddl	m3Z4dededdfd	�Zdefd5�Z
d�Zd�Zddejdefd�Zd�Zdededefd�Zdefd�Zdedefd�ZdS)�)�BytesION)�Image)�
HTTPException�6UploadFile)�settings�upload�7field_name�returnc��|stdd|������|jr|j�d��stdd|�d�����dS)N�zFalta el archivo: ��status_code�detailzimage/�'z' debe ser una imagen.)r�content_type�8startswith)rr	s  �]/Users/alexiseduardojuarezjaimes/Desktop/Test api-face-extractor/app/services/face_service.py�ensure_imager	sw���W���4U��4U�4U�V�V�V�V���\�f�&9�&D�&D�X�&N�&N�\���4Z�9�4Z�4Z�4Z�[�[�[�[�\�\�c���K�|����d{V��}|stdd����	tjt	|����S#t10$rtdd����wxYw)NruLa imagen está vacía.r
u*No pude leer la imagen. ¿Formato válido?)�readr�face_recognition�load_image_filer�	Exception)r�raws  r�read_as_np_imagers��������
�
�11�12�13�14�15�16�C��O���4M�N�N�N�N�b��/�����=�=�=���b�b�b���4`�a�a�a�a�b���s� A�A.c���tj|tj���}t	|��dkrtdd����t	|��dkrtdd����|dS)N)�modelr�u6No se detectó ningún rostro en una de las imágenes.r
�u9Se detectaron múltiples rostros en una de las imágenes.)r�face_locationsr�17face_model�lenr)�np_img�locss  r�detect_single_facer&si���*�6��9L�M�M�M�D�18�4�y�y�A�~�~���4l�m�m�m�m�19�4�y�y�1�}�}���4o�p�p�p�p���7�Nrc��|\}}}}tj|��}|j\}}td|��}td|��}t	||��}t	||��}|�||||f��}	||||d�}20|	|21fS)Nr)�top�right�bottom�left)r�	fromarray�size�max�min�crop)r$�locr(r)r*r+�pil_img�w�h�	face_crop�bboxs           r�	crop_facer7 s���"��C�����o�f�%�%�G��<�D�A�q�22
�a��+�+�C�c�!�T�l�l�t�
��F�^�^�F�S��E�]�]�U����d�C���7�8�8�I���&�$�G�G�D��d�?�r�_r2�qualityc���t��}|�|d|���tj|������d��}|d|��fS)N�JPEG)�formatr9zutf-8zdata:image/jpeg;base64,)r�save�base64�	b64encode�getvalue�decode)r2r9�buf�b64s    r�img_to_base64_jpegrD,s]��23�)�)�C��L�L��V�W�L�5�5�5�24�25�3�<�<�>�>�26*�27*�281�291�'�30:�31:�C��/�#�/�/�/�/rc�f�tj||g���}|stdd����|dS)N)�known_face_locationsruMNo pude generar el embedding del rostro (imagen borrosa / mala iluminación).r
r)r�face_encodingsr)r$r1�encss   r�encode_facerI2sI���*�6���N�N�N�D��32���b�33�34�35�	36���7�Nr�distance�	tolerancec�H�||krdSd||zz37}t|dzd��S)Ngg�?gY@�)�round)rJrK�scores   r�distance_to_percentrP;s5���9����s��8�i�'�(�E������"�"�"r�imagec���K�t|d��t|���d{V��}t|��}t||��\}}t	|��\}}|d||d�S)NrQ�jpeg)r6r<�face_base64�data_uri)rrr&r7rD)rQr$r1r5r6�face_b64rUs       r�extract_face_from_uploadrWBs�������� � � �#�E�*�*�
*�
*�
*�
*�
*�
*�F�38�V�39$�40$�C����,�,�O�I�t�+�I�6�6��H�h�����	��r�image1�image2c��K�t|d��t|d��t|���d{V��}t|���d{V��}t|��}t|��}t||��\}}t	|��\}}	t||��}41t||��}t
tj��}t
tj42|43g|��d��}
ttj|44g||���d��}t|
|��}|t|
d��||||	d�S)NrXrYr)rK�)rKrJ�is_match�similarity_percent�image1_bbox�image1_face_data_uri)rrr&r7rDrI�floatrrKr�
face_distance�bool�
compare_facesrPrN)rXrY�np1�np2�loc1�loc2�45face1_crop�bbox1�_�face1_data_uri�enc1�enc2rKrJr\r]s                r�compare_two_uploadsrnQs[�������"�"�"����"�"�"� ��(�(�46(�47(�48(�49(�50(�51(�C� ��(�(�52(�53(�54(�55(�56(�57(�C��c�"�"�D��c�"�"�D�"�#�t�,�,��J��*�:�6�6��A�~��s�D�!�!�D��s�D�!�!�D��h�(�)�)�I��%�3�T�F�D�A�A�!�D�E�E�H��$�2�D�6�4�9�U�U�U�VW�X�Y�Y�H�,�X�y�A�A����(�A�&�&��0�� .�
��r)r8)�iorr>�PILrr�fastapirr�app.core.configr�strrrr&r7�intrDrIr`rPrWrn�rr�<module>rvs~��������
�
�
�
�����������-�-�-�-�-�-�-�-�$�$�$�$�$�$�\��\��\��\�\�\�\�b�:�b�b�b�b����58�59�60�0�0���0�c�0�0�0�0����#�%�#�E�#�e�#�#�#�#�
�*�
�
�
�
��j��*������r