
    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dlmZ d	Zd
Zi dddgdddgdddgdddgdddgdddgdddgdddgdddgd d!d"gd#d$d%gd&d'd(gd)d*d+gd,d-d.gd/d0d(gd1d2d"gd3d4d5gd6dgd7dgd8dgd9dgd:dgd;dgd<dgd=dgd>d"gd?d1gd@d.gdAd+gdBd.gdCd(gd<d"gdDZd*d"gdd"gd*dEgdFd"gdGdHgdId%gdJd%gdIdEgdKd%gdIdLgdM
Z G dN dOej                  ZedPk    r ej                     dS dS )Qz/Tests for mediapipe.python.solutions.face_mesh.    N)
NamedTuple)absltest)parameterized)drawing_styles)drawing_utils)	face_meshz#mediapipe/python/solutions/testdata   !   iY        i\        i`     ie     im     is     iz     }        i     i[        i^        ic        j        ip        iw     |  i  i     i  i  i  i  i  i  i  i  i  i  i  i  i  i  )   i  iu  iv  r$   r   i~  r   i  i  i  i  i  i  i     ib  ik     i  i  i     )
i  i  i  i  i  i  i  i  i  i  c                       e Zd Zdej        dededefdZd Z	d Z
 ej        dd	d
d          dededefd            ZdS )FaceMeshTestframeresultsidx	draw_irisc           	      d   |j         D ]}t          j        ||t          j        d t          j                               t          j        ||t          j        d t          j                               |r4t          j        ||t          j	        d t          j
                               t          j                            t          j                    |                                                     d          d         d                    |          z             }t'          j        ||           d S )N)landmark_drawing_specconnection_drawing_spec.z_frame_{}.png)multi_face_landmarks
mp_drawingdraw_landmarksmp_facesFACEMESH_TESSELATIONr   'get_default_face_mesh_tesselation_styleFACEMESH_CONTOURS$get_default_face_mesh_contours_styleFACEMESH_IRISES,get_default_face_mesh_iris_connections_styleospathjointempfile
gettempdiridsplitformatcv2imwrite)selfr,   r-   r.   r/   face_landmarksr@   s          i/var/www/html/nettyfy-visnx/env/lib/python3.11/site-packages/mediapipe/python/solutions/face_mesh_test.py	_annotatezFaceMeshTest._annotateV   s:   !6 = =



' $"02#5 #56 6 6 6 



$ $"0/#2 #23 3 3 3 
 =!$"&$29%< %<	= 	= 	= 	= 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      )	r8   FaceMeshassertRaisesRegex
ValueErrorprocessnparangeuint8reshape)rI   facess     rK   test_invalid_image_shapez%FaceMeshTest.test_invalid_image_shapes   s>   				 F!!
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                    5 }t          j        g dt          j                  }|                    d           |                    |          }|                     |j                   d d d            d S # 1 swxY w Y   d S )N)d   r_   rR   rP      )	r8   rT   rX   zerosrZ   fillrW   assertIsNoner5   )rI   r\   imager-   s       rK   test_blank_imagezFaceMeshTest.test_blank_imagey   s    				 6h}}}BH555ejjoooe$$g
4555	6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6s   A'BBB)static_image_mode_no_attentionTFr	   ) static_image_mode_with_attentionTTr	   )streaming_mode_no_attentionFF
   )streaming_mode_with_attentionFTri   static_image_moderefine_landmarks
num_framesc           	      ^   t           j                            t           j                            t                    d          }t          j        |          }|j        \  }t          j	        ||d          5 }t          |          D ]}|                    t          j        |t
          j                            }	|                     |                                |	||           g }
|	j        D ]}|                     |j        |rt          j        nt          j                   fd|j        D             }fd|j        D             }t+          j        ||f          }|
                    |           |                     |
d           t0                                          D ]f\  }}t+          j        t+          j        |
d         |                   t+          j        |          z
            }t9          j        |t<                     g|rt>                                          D ]f\  }}t+          j        t+          j        |
d         |                   t+          j        |          z
            }t9          j        |t<                     g		 d d d            d S # 1 swxY w Y   d S )Nztestdata/portrait.jpgg      ?)rk   rl   min_detection_confidencec                 $    g | ]}|j         z  S  )x).0landmarkcolss     rK   
<listcomp>z*FaceMeshTest.test_face.<locals>.<listcomp>        DDDXxzD DDDrM   c                 $    g | ]}|j         z  S rq   )y)rs   rt   rowss     rK   rv   z*FaceMeshTest.test_face.<locals>.<listcomp>   rw   rM      r   ) r?   r@   rA   dirname__file__rG   imreadshaper8   rT   rangerW   cvtColorCOLOR_BGR2RGBrL   copyr5   	assertLenrt   "FACEMESH_NUM_LANDMARKS_WITH_IRISESFACEMESH_NUM_LANDMARKSrX   column_stackappendEYE_INDICES_TO_LANDMARKSitemsabsasarraynptassert_array_lessDIFF_THRESHOLDIRIS_INDICES_TO_LANDMARKS)rI   rk   rl   rm   
image_pathrd   _r\   r.   r-   r5   	landmarksrr   ry   rJ   eye_idxgt_ldsprediction_erroriris_idxru   rz   s                      @@rK   	test_facezFaceMeshTest.test_face   s    bgooh7757 7JJz""EKMD$		+)!$
& 
& 
& D */z"" D D#--UC4E F FGGuzz||Wc3CDDD! 5 	6 	6I
.. !#G("M"M'/'FH H H EDDD1CDDD!DDDD1CDDD!?Aq622.

%
%n
5
5
5
5+Q///7==?? 	B 	BOGVVj-a09::RZ=O=OOQ Q


 0.
A
A
A
A 	D";"A"A"C"C D Dh!v
/28<==
6""# $  $ !"2NCCCC/D	D D D D D D D D D D D D D D D D D Ds   ;HJ""J&)J&N)__name__
__module____qualname__rX   ndarrayr   intboolrL   r]   re   r   named_parametersr   rq   rM   rK   r+   r+   T   s        RZ * 3    :F F F6 6 6 "=!8978	: :
!D !D !D!D !D !D: :
!D !D !DrM   r+   __main__)__doc__r?   rB   typingr   absl.testingr   r   rG   numpyrX   numpy.testingtestingr   mediapipe.python.solutionsr   r   r6   r   r8   TEST_IMAGE_PATHr   r   r   TestCaser+   r   mainrq   rM   rK   <module>r      s   6 5 				        ! ! ! ! ! ! & & & & & & 



           6 5 5 5 5 5 B B B B B B < < < < < <7!c
!Sz! #s! #s	!
 #s! #s! #s! #s! #s! #s! #s! #s! #s! #s! #s!  #s!!" #s#!$ s
s
s
s
s
s
s
s
s
s
s
s
s
s
sA! ! ! H s
s
s
s
s
s
s
s
s
s  RD RD RD RD RD=) RD RD RDj z(-///// rM   