
    Wpf                        d Z ddlZddlZ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mZ ddlmZ dZd	d
gddgddgddgddgddggZd	dgddgddgddgddgddggZdZ G d  d!ej                  Zed"k    r ej                     dS dS )#z4Tests for mediapipe.python.solutions.face_detection.    N)
NamedTuple)absltest)parameterized)drawing_utils)face_detectionz#mediapipe/python/solutions/testdataik     i     i     i  i  i'     i        i  i     i  i  i2     i        c                   l    e Zd Zdej        dedefdZd Zd Z	 e
j        dd          d	             Zd
S )FaceDetectionTestframeresultsidxc                 R   |j         D ]}t          j        ||           t          j                            t          j                    |                                 	                    d          d         d
                    |          z             }t          j        ||           d S )N.z_frame_{}.png)
detections
mp_drawingdraw_detectionospathjointempfile
gettempdiridsplitformatcv2imwrite)selfr   r   r   	detectionr   s         n/var/www/html/nettyfy-visnx/env/lib/python3.11/site-packages/mediapipe/python/solutions/face_detection_test.py	_annotatezFaceDetectionTest._annotate)   s    ' 2 2	y11117<<+--twwyys/C/CB/G.=.D.DS.I.I0J K KDKe    c           	      T   t          j                    5 }|                     t          d          5  |                    t          j        dt
          j                                      ddd                     d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nz0Input image must contain three channel rgb data.$   dtype      )	mp_facesFaceDetectionassertRaisesRegex
ValueErrorprocessnparangeuint8reshape)r'   facess     r)   test_invalid_image_shapez*FaceDetectionTest.test_invalid_image_shape0   s>   			!	! FU!!
HJ J F Fbi"(333;;Aq!DDEEEF F F F F F F F F F F F F F FF F F F F F F F F F F F F F F F F Fs5   BA	B9BB			BB		BB!$B!c                 .   t          j        g dt           j                  }|                    d           t	          j        d          5 }|                    |          }|                     |j                   d d d            d S # 1 swxY w Y   d S )N)d   r>   r0   r.            ?)min_detection_confidence)	r7   zerosr9   fillr2   r3   r6   assertIsNoner   )r'   imager;   r   s       r)   test_blank_imagez"FaceDetectionTest.test_blank_image6   s    H]]]"(333E	JJsOOO			=	=	= ,e$$g
*+++, , , , , , , , , , , , , , , , , ,s   0B

BB)short_range_modelr   )full_range_model   c                 T   t           j                            t           j                            t                    d          }t          j        |          }|j        \  }t          j	        d|          5 }t          d          D ]}|                    t          j        |t
          j                            }|                     |                                ||           |j        d         j        }fd|j        D             }	fd|j        D             }
t'          j        |	|
f          }|dk    rAt'          j        t'          j        |          t'          j        t.                    z
            }n@t'          j        t'          j        |          t'          j        t0                    z
            }|                     |j        d           |                     |j        d	           t5          j        |t8                     	 d d d            d S # 1 swxY w Y   d S )
Nztestdata/portrait.jpgr@   )rA   model_selectionr   r   c                 $    g | ]}|j         z  S  )x).0keypointcolss     r)   
<listcomp>z/FaceDetectionTest.test_face.<locals>.<listcomp>J        PPP8XZ$PPPr+   c                 $    g | ]}|j         z  S rM   )y)rO   rP   rowss     r)   rR   z/FaceDetectionTest.test_face.<locals>.<listcomp>K   rS   r+   rI      )r   r   r   dirname__file__r%   imreadshaper2   r3   ranger6   cvtColorCOLOR_BGR2RGBr*   copyr   location_datarelative_keypointsr7   column_stackabsasarray$SHORT_RANGE_EXPECTED_FACE_KEY_POINTS#FULL_RANGE_EXPECTED_FACE_KEY_POINTS	assertLennptassert_array_lessDIFF_THRESHOLD)r'   rK   
image_pathrE   _r;   r   r   r`   rN   rU   face_keypointsprediction_errorrQ   rV   s                @@r)   	test_facezFaceDetectionTest.test_face=   sR    bgooh7757 7JJz""EKMD$		!$o
G 
G 
G @JOq @ @#--UC4E F FGGuzz||Wc222*1-;PPPP}/OPPPPPPP}/OPPP!Q00aVj((j=>>?@ @

  Vj((j<==>? ?
 	w)1---}7;;;.????%@@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @s   :FHH!$H!N)__name__
__module____qualname__r7   ndarrayr   intr*   r<   rF   r   named_parametersro   rM   r+   r)   r   r   '   s        RZ * 3    F F F, , , "=!":"9; ;@ @; ;@ @ @r+   r   __main__)__doc__r   r    typingr   absl.testingr   r   r%   numpyr7   numpy.testingtestingrh   mediapipe.python.solutionsr   r   r   r2   TEST_IMAGE_PATHre   rf   rj   TestCaser   rp   mainrM   r+   r)   <module>r      sg   ; : 				        ! ! ! ! ! ! & & & & & & 



           C B B B B B A A A A A A7),c
S#Jc
),c
S#Jc
(L $(+SzC:Sz(+SzC:Sz'K #1@ 1@ 1@ 1@ 1@. 1@ 1@ 1@h z(-///// r+   