
    WpfH.                     @   d 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  ej                    Z ej                    Z ej        ej        	          Z ej                    Zd
Z G d dej                  Zedk    r ej                     dS dS )z3Tests for mediapipe.python.solutions.drawing_utils.    )absltest)parameterizedN)text_format)detection_pb2)landmark_pb2)drawing_utils)color)   r
   r
   c                       e Zd Zd Zd Zd Zd Zd Z ej	        dd          d             Z
 ej	        d	d
          d             Zd Zd Zd Zd ZdS )DrawingUtilTestc                    t          j        dt           j                                      ddd          }|                     t
          d          5  t          j        |t          j	                               d d d            n# 1 swxY w Y   |                     t
          d          5  t          j
        |t          j                               d d d            n# 1 swxY w Y   |                     t
          d          5  t          j        dt           j                  }t          j        g d          }t          j        |||           d d d            d S # 1 swxY w Y   d S )N   dtype      z0Input image must contain three channel bgr data.)        r         ?)nparangeuint8reshapeassertRaisesRegex
ValueErrorr   draw_landmarksr   NormalizedLandmarkListdraw_detectionr   	Detectioneyefloat32array	draw_axis)selfimagerotationtranslations       m/var/www/html/nettyfy-visnx/env/lib/python3.11/site-packages/mediapipe/python/solutions/drawing_utils_test.pytest_invalid_input_imagez(DrawingUtilTest.test_invalid_input_image%   s.   Ib)))11!Q::E			F
H 
H Q Q"5,*M*O*OPPPQ Q Q Q Q Q Q Q Q Q Q Q Q Q Q 
		F
H 
H E E"5-*A*C*CDDDE E E E E E E E E E E E E E E 
		F
H 
H < <,,,hH\\\**keX{;;;	< < < < < < < < < < < < < < < < < <s7   'BBB*'CC!$C!AEE!$E!c                 R   t          j        dt          j                              }t	          j        dt          j                                      ddd          }|                     t          d          5  t          j        ||dg           d d d            d S # 1 swxY w Y   d S )Nz1landmark {x: 0.5 y: 0.5} landmark {x: 0.2 y: 0.2}   r   r   zLandmark index is out of range.)r   r   )r   Parser   r   r   r   r   r   r   r   r   r   )r#   landmark_listr$   s      r'   test_invalid_connectionz'DrawingUtilTest.test_invalid_connection3   s    %;+--/ /M Ib)))11!Q::E			
,M	N	N C C"5-&BBBC C C C C C C C C C C C C C C C C Cs   7BB #B c                 N   t          j        dt          j                              }t	          j        dt          j                                      ddd          }|                     t          d          5  t          j        ||           d d d            d S # 1 swxY w Y   d S )Nzlocation_data {format: GLOBAL}r*   r   r   zLocationData must be relative)r   r+   r   r   r   r   r   r   r   r   r   r   )r#   	detectionr$   s      r'   test_unqualified_detectionz*DrawingUtilTest.test_unqualified_detection;   s    !"B"/"9";";= =IIb)))11!Q::E			
,K	L	L 5 5"5)4445 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5s   7BB!Bc                    t          j        dt          j                              }t	          j        dt          j                  }t	          j        |          }t          j	        |dt          j        t          j        t          j                   t          j	        |dt          j        t          j        t          j                   t          j        ||           t          j                            ||           d S )Nzolocation_data {  format: RELATIVE_BOUNDING_BOX  relative_keypoints {x: 0 y: 1}  relative_keypoints {x: 1 y: 0}}d   r3   r   r   c   r5   r   )r   r+   r   r   r   zerosr   copycv2circleDEFAULT_CIRCLE_DRAWING_SPECcircle_radiusr	   	thicknessr   r   testingassert_array_equalr#   r/   r$   expected_results       r'   test_draw_keypoints_onlyz(DrawingUtilTest.test_draw_keypoints_onlyB   s    !	, .;-D-F-F	H HI
 H]BH--EgennOJ*8*0*46 6 6 J*8*0*46 6 6  	222J!!%99999    c                 z   t          j        dt          j                              }t	          j        dt          j                  }t	          j        |          }t          j	        |ddt          j        t          j                   t          j        ||           t          j                            ||           d S )Nzklocation_data {  format: RELATIVE_BOUNDING_BOX  relative_bounding_box {xmin: 0 ymin: 0 width: 1 height: 1}}r2   )r   r   )r5   r5   )r   r+   r   r   r   r7   r   r8   r9   	rectangleDEFAULT_BBOX_DRAWING_SPECr	   r=   r   r   r>   r?   r@   s       r'   test_draw_bboxs_onlyz$DrawingUtilTest.test_draw_bboxs_onlyU   s    !	H 	!!	# #I
 H]BH--EgennOM/68+1+57 7 7  	222J!!%99999rC   )"landmark_list_has_only_one_elementzlandmark {x: 0.1 y: 0.1})second_landmark_is_invisiblezAlandmark {x: 0.1 y: 0.1} landmark {x: 0.5 y: 0.5 visibility: 0.0}c                    t          j        |t          j                              }t	          j        dt          j                  }t	          j        |          }t          j	        |dt          j        dz   t          t          j                   t          j	        |dt          j        t          j        t          j                   t          j        ||           t          j                            ||           d S )Nr2   
   rL      )r   r+   r   r   r   r7   r   r8   r9   r:   r;   r<   DEFAULT_CYCLE_BORDER_COLORr=   r	   r   r   r>   r?   )r#   landmark_list_textr,   r$   rA   s        r'   test_draw_single_landmark_pointz/DrawingUtilTest.test_draw_single_landmark_pointc   s    
  %&8&2&I&K&KM MMH]BH--EgennOJ*81<)*46 6 6 J*8*0*46 6 6  666J!!%99999rC   )landmarks_have_x_and_y_onlyz1landmark {x: 0.1 y: 0.5} landmark {x: 0.5 y: 0.1})%landmark_zero_visibility_and_presencezNlandmark {x: 0.1 y: 0.5 presence: 0.5}landmark {x: 0.5 y: 0.1 visibility: 0.5}c                 0   t          j        |t          j                              }t	          j        dt          j                  }t	          j        |          }d}d}t          j	        |||t          j        t          j                   t          j        ||t          j        dz   t           t          j                   t          j        ||t          j        dz   t           t          j                   t          j        ||t          j        t          j        t          j                   t          j        ||t          j        t          j        t          j                   t#          j        ||dg           t          j                            ||           d S )Nr2   )rL   2   )rT   rL   rM   r   rM   r$   r,   connectionsr   r+   r   r   r   r7   r   r8   r9   lineDEFAULT_CONNECTION_DRAWING_SPECr	   r=   r:   r;   r<   rN   r   r   r>   r?   )r#   rO   r,   r$   rA   start_point	end_points          r'   #test_draw_landmarks_and_connectionsz3DrawingUtilTest.test_draw_landmarks_and_connectionsw   sr     %&8&2&I&K&KM MMH]BH--EgennOKIH_k9,2,68 8 8 J*81<)*46 6 6 J	*81<)*46 6 6 J*8*0*46 6 6 J	*8*0*46 6 6  =vhH H H HJ!!%99999rC   c                    t          j        dt           j                  }t          j        |          }d}d}d}d}t	          j        |||t          j        t          j	                   t	          j        |||t          j
        t          j	                   t	          j        |||t          j        t          j	                   t          j        d          dz  }t          j        g dd|| gd||gg          }t          j        g d	          }	t          j        |||	           t           j                            ||           d S )
Nr2   rT   rT   )K   rT   )rT      )rT   M   g       @)r   r   r   r   )r   r   gɿ)r   r7   r   r8   r9   arrowedLiner   	RED_COLORDEFAULT_AXIS_DRAWING_SPECr=   GREEN_COLOR
BLUE_COLORsqrtr!   r"   r>   r?   )
r#   r$   rA   originx_axisy_axisz_axisrr%   r&   s
             r'   test_draw_axiszDrawingUtilTest.test_draw_axis   s%   H]BH--EgennOFFFFOOVV]5L-79 9 9OOVV]5N-79 9 9OOVV]5M-79 9 9
bAxAr{RAJ?@@H(<<<((KE8[999J!!%99999rC   c                 p   t          j        dt           j                  }t          j        |          }d}d}d}d}t	          j        |||t          j        t          j	                   t	          j        |||t          j
        t          j	                   t	          j        |||t          j        t          j	                   t          j        dt           j                  }t          j        dt           j                  }t          j        |||           t           j                            ||           d S )Nr2   r_   )r   rT   )rT   r3   r   r   )r   )r   r7   r   r8   r9   rc   r   rd   re   r=   rf   rg   r   r    r"   r>   r?   )	r#   r$   rA   ri   rj   rk   rl   r%   r&   s	            r'   test_draw_axis_zero_translationz/DrawingUtilTest.test_draw_axis_zero_translation   s   H]BH--EgennOFFFFOOVV]5L-79 9 9OOVV]5N-79 9 9OOVV]5M-79 9 9varz***H(4rz222KE8[999J!!%99999rC   c                 0   t          j        dt          j                              }t	          j        dt          j                  }t	          j        |          }d}d}t          j	        |||t          j        t          j                   t          j        ||t          j        dz   t           t          j                   t          j        ||t          j        dz   t           t          j                   t          j        ||t          j        t          j        t          j                   t          j        ||t          j        t          j        t          j                   t#          j        ||dg           t          j                            ||           d S )Nz0landmark {x: 0.0 y: 1.0}landmark {x: 1.0 y: 0.0}r2   r4   r6   rM   rU   rV   rX   )r#   r,   r$   rA   r[   r\   s         r'   "test_min_and_max_coordinate_valuesz2DrawingUtilTest.test_min_and_max_coordinate_values   st   %	#$0$G$I$IK KM H]BH--EgennOKIH_k9,2,68 8 8 J*81<)*46 6 6 J	*81<)*46 6 6 J*8*0*46 6 6 J	*8*0*46 6 6  =vhH H H HJ!!%99999rC   c                    t          j        dt          j                              }t	          j        dt          j                  }t          j        dd          }t          j        dd          }t	          j	        |          }d}d	}t          j        ||||j        |j                   t          j        |||j        d
z   t           |j                   t          j        |||j        d
z   t           |j                   t          j        |||j        |j        |j                   t          j        |||j        |j        |j                   t          j        ||dg||           t          j                            ||           d S )Nz0landmark {x: 0.1 y: 0.1}landmark {x: 0.8 y: 0.8}r2   )r   r         )r	   r=   )rt   r   r   r   rK   )P   rv   rM   rU   )r$   r,   rW   landmark_drawing_specconnection_drawing_spec)r   r+   r   r   r   r7   r   r   DrawingSpecr8   r9   rY   r	   r=   r:   r<   rN   r   r>   r?   )r#   r,   r$   rw   rx   rA   r[   r\   s           r'   test_drawing_specz!DrawingUtilTest.test_drawing_spec   s   %	#$0$G$I$IK KM H]BH--E)5Q( ( (+7Q( ( (gennOKIH_k9$*,C,MO O OJ$2Q6)+@+JL L L J	$2Q6)+@+JL L L J$24I4O$.0 0 0 J	+@+N$*,A,KM M M #H3 79 9 9 9 J!!%99999rC   N)__name__
__module____qualname__r(   r-   r0   rB   rG   r   named_parametersrP   r]   rn   rp   rr   rz    rC   r'   r   r   #   s       < < <C C C5 5 5: : :&: : : "=!HLM M: :	M M:  "=!<34 4: :4 4:<: : :&: : :$: : :>: : : : :rC   r   __main__)__doc__absl.testingr   r   r9   numpyr   google.protobufr   mediapipe.framework.formatsr   r   mediapipe.python.solutionsr   ry   rF   rZ   rd   r;   re   rN   TestCaser   r{   mainr   rC   r'   <module>r      sC   : 9 ! ! ! ! ! ! & & & & & & 



     ' ' ' ' ' ' 5 5 5 5 5 5 4 4 4 4 4 4 4 4 4 4 4 45M577 ";-";"="= 7m7

!# # # 5M577 , [: [: [: [: [:m, [: [: [:| z(-///// rC   