
    uki$                         d Z ddlZddl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
ZddlmZ ddlmZ dZej                   Zej"                  Z G d dej$                        Zed	k(  r ej*                          yy)
z5Tests for mediapipe.python._framework_bindings.image.    N)absltest)image)image_framez#mediapipe/python/solutions/testdatac                   Z    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zy)	ImageTestc                    t        j                  dd      t        j                  dd      }}t        j                  t        j                   j                  d||dft        j                        t        j                        }d|d<   t        t        j                  |      }| j                  t	        j                  ||j                                      | j                  t        d      5  t!        |||d	f          d d d        | j                  t        d
      5  t!        |||f          d d d        | j#                  d|d          y # 1 sw Y   NxY w# 1 sw Y   +xY w)N   d      sizedtype*   )   r   image_formatdataindex dimension mismatch   out of bounds)random	randrangecv2cvtColornprandintuint8COLOR_RGB2GRAYImageImageFormatGRAY8
assertTruearray_equal
numpy_viewassertRaisesRegex
IndexErrorprintassertEqual)selfwhmatgray8_images        V/home/cdr/jupyterlab/.venv/lib/python3.12/site-packages/mediapipe/python/image_test.py"test_create_image_from_gray_cv_matz,ImageTest.test_create_image_from_gray_cv_mat(   s    As#V%5%5a%=qA
,,
		(!Q"((CC CI[%6%6SAKOOBNN3(>(>(@AB			
,F	G "K1a !"			
O	< K1RT*+	" " s   +E
E
EEc                 R   t        j                  dd      t        j                  dd      d}}}t        j                  t        j                   j                  d|||ft        j                        t        j                        }d|d<   t        t        j                  |      }| j                  t	        j                  ||j                                      | j                  t        d      5  t!        ||||f          d d d        | j#                  d|d          y # 1 sw Y   xY w)	Nr	   r
   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   COLOR_RGB2BGRr   r    SRGBr"   r#   r$   r%   r&   r'   r(   )r)   r*   r+   channelsr,   	rgb_images         r.   !test_create_image_from_rgb_cv_matz+ImageTest.test_create_image_from_rgb_cv_mat6   s    %%a-v/?/?3/G(qA
,,
		(!Q)9JC CL;#3#3#>IOOBNN3	(<(<(>?@			
O	< 'IaHn%&'R7+,' '   -DD&c                 R   t        j                  dd      t        j                  dd      d}}}t        j                  t        j                   j                  d|||ft        j                        t        j                        }d|d<   t        t        j                  |      }| j                  t	        j                  ||j                                      | j                  t        d      5  t!        ||||f          d d d        | j#                  d|d          y # 1 sw Y   xY w)	Nr	   r
     r   r   r1   r   r   )r   r   r   r   r   r   uint16r2   r   r    SRGB48r"   r#   r$   r%   r&   r'   r(   )r)   r*   r+   r4   r,   rgb48_images         r.   #test_create_image_from_rgb48_cv_matz-ImageTest.test_create_image_from_rgb48_cv_matB   s    %%a-v/?/?3/G(qA
,,
		)1a*:"))LC CL[%7%7cBKOOBNN3(>(>(@AB			
O	< )K1h'()RW-.) )r7   c                    t        j                  dd      t        j                  dd      }}t        j                  j	                  t
        j                   j                  d||ft
        j                        d      }t        t        j                  t        j                  |            }| j                  t        j                  t        j                  |      |j                                      | j                  t        d      5  t!        |||df          d d d        | j                  t        d	      5  t!        |||f          d d d        y # 1 sw Y   9xY w# 1 sw Y   y xY w)
Nr	   r
   r   r   Lr   r   r   r   )r   r   PILr   	fromarrayr   r   r   r    r!   asarrayr"   r#   r$   r%   r&   r'   )r)   r*   r+   imgr-   s        r.   %test_create_image_from_gray_pil_imagez/ImageTest.test_create_image_from_gray_pil_imageN   s   As#V%5%5a%=qA
))


		(!Qrxx@#GC[%6%6RZZ_MKOOBNN2::c?K4J4J4LMN			
,F	G "K1a !"			
O	< K1 " " s   E7EEE&c                 b   t        j                  dd      t        j                  dd      d}}}t        j                  j	                  t
        j                   j                  d|||ft
        j                        d      }t        t        j                  t        j                  |            }| j                  t        j                  t        j                  |      |j                                      | j                  t        d      5  t!        ||||f          d d d        y # 1 sw Y   y xY w)Nr	   r
   r   r   RGBr   r   )r   r   r@   r   rA   r   r   r   r    r3   rB   r"   r#   r$   r%   r&   r'   )r)   r*   r+   r4   rC   r5   s         r.   $test_create_image_from_rgb_pil_imagez.ImageTest.test_create_image_from_rgb_pil_imageY   s    %%a-v/?/?3/G(qA
))


		(!Q)9JC ;#3#3"**S/JIOOBNN2::c?I4H4H4JKL			
O	< 'IaHn%&' ' 's   
D%%D.c                    t        j                  dd      t        j                  dd      d}}}t        j                  j	                  t
        j                   j                  d|||ft
        j                        d      }t        t        j                  t        j                  |      j                  t
        j                              }| j                  t        j                  t        j                  |      |j                                      | j                  t         d      5  t#        |d	          d d d        y # 1 sw Y   y xY w)
Nr	   r
      r9   r   RGBAr   r   )  rK   rK   )r   r   r@   r   rA   r   r   r:   r    SRGBA64rB   astyper"   r#   r$   r%   r&   r'   )r)   r*   r+   r4   rC   
rgba_images         r.   'test_create_image_from_rgba64_pil_imagez1ImageTest.test_create_image_from_rgba64_pil_imagec   s    %%a-v/?/?3/G(qA
))


		)1a*:"))LC  ((ZZ_##BII.0J 	OOBNN2::c?J4I4I4KLM			
O	< *J'()* * *s   'D??Ec                 Z   t        j                  dd      t        j                  dd      d}}}t        j                  t        j                   j                  d|||ft        j                        t        j                        }t        t        j                  |      }|j                         }| j                  t	        j                  ||j                                      | j                  t        d      5  d|d<   d d d        t	        j                   |      }d|d<   y # 1 sw Y   $xY w)	Nr	   r
   r   r   r   z#assignment destination is read-onlyr   )r   r   r   )r   r   r   r   r   r   r   r2   r   r    r3   r$   r"   r#   r%   
ValueErrorcopy)r)   r*   r+   r4   r,   r5   output_ndarraycopied_ndarrays           r.   test_image_numby_viewzImageTest.test_image_numby_viewo   s    %%a-v/?/?3/G(qA
,,
		(!Q)9JC ;#3#3#>I))+NOOBNN3	(<(<(>?@ 
		
 E
G " !nW" WW^,NN7	" "s   8D!!D*c           	         t        j                  dd      t        j                  dd      }}d\  }}t        j                  t        j                   j                  d|||ft        j                        t        j                        }t        t        j                  t	        j                  ||| || f               }| j                  t	        j                  ||| || f   |j                                      y N   r
   )r	   
   r   r   r   )r   r   r   r   r   r   r   r   r   r    r!   ascontiguousarrayr"   r#   r$   )r)   r*   r+   r4   offsetr,   r-   s          r.   test_cropped_gray8_imagez"ImageTest.test_cropped_gray8_image   s    B$f&6&6r3&?qAHf
,,
		(!Q)9JC  &&!!#ffWnffWn&D"EFHK 	OO
s66'>66'>9:"--/	12    c           
      
   t        j                  dd      t        j                  dd      }}d\  }}t        j                  t        j                   j                  d|||ft        j                        t        j                        }t        t        j                  t	        j                  ||| || d d f               }| j                  t	        j                  ||| || d d f   |j                                      y rW   )r   r   r   r   r   r   r   r2   r   r    r3   rZ   r"   r#   r$   )r)   r*   r+   r4   r[   r,   r5   s          r.   test_cropped_rgb_imagez ImageTest.test_cropped_rgb_image   s    B$f&6&6r3&?qAHf
,,
		(!Q)9JC  %%!!#ffWnffWna&G"HIKI 	OO
s66'>66'>1<= ++-	/0r]   c                    d\  }}t         j                  j                  d||dft         j                        }t	        t
        j                  |      }| j                  |j                                t        j                  |      }| j                  t        j                  ||j                                      |j                         }| j                  t        j                  |      |dz          |j                         }| j                  t        j                  |      |dz          ~~t        j                          | j                  t        j                  |      |       y )N)i  i  r   r	   r   r   r   r   )r   r   r   r   r   r    r3   r"   is_contiguoussysgetrefcountr#   r$   r(   gccollect)r)   r*   r+   r,   r5   initial_ref_countnp_viewnp_view2s           r.   *test_image_numpy_view_with_contiguous_dataz4ImageTest.test_image_numpy_view_with_contiguous_data   s   DAq
))

HAq!9BHH

EC;#3#3#>IOOI++-.	2OOBNN3	(<(<(>?@ ""$GS__Y/1BQ1FG##%HS__Y/1BQ1FGJJL 	S__Y/1BCr]   c                 V   d\  }}t         j                  j                  d||dft         j                        }t	        t
        j                  |      }| j                  |j                                t        j                  |      }| j                  t        j                  ||j                                      |j                         }| j                  t        j                  |      |       ~t        j                           | j                  t        j                  |      |       y )N)i  i  r   r	   r   r   )r   r   r   r   r   r    r3   assertFalsera   rb   rc   r"   r#   r$   r(   rd   re   )r)   r*   r+   r,   r5   rf   rg   s          r.   .test_image_numpy_view_with_non_contiguous_dataz8ImageTest.test_image_numpy_view_with_non_contiguous_data   s    DAq
))

HAq!9BHH

EC;#3#3#>IY,,./	2OOBNN3	(<(<(>?@""$GS__Y/1BCJJLS__Y/1BCr]   c                    t         j                  j                  t         j                  j                  t              d      }t        j                  |      j                  t        j                        }t        j                  |t
        j                        }t        t        j                  |      }| j                  |j                   d       | j                  |j"                  d       | j                  |j$                  d       | j                  |j&                  t        j                         | j)                  t        j*                  ||j-                                      y )Nsolutions/testdata/hands.jpgr     ~  r	   )ospathjoindirname__file__r   imreadrM   r   r   r   COLOR_BGR2RGBr   r    r3   r(   widthheightr4   r   r"   r#   r$   )r)   
image_pathr,   r5   s       r.   test_image_create_from_cvmatz&ImageTest.test_image_create_from_cvmat   s    bggooh7<>J
**Z
 
'
'
1C
,,sC--
.C;#3#3#>IY__c*Y%%s+Y''+Y++[-=-=>OOBNN3	(<(<(>?@r]   c                    t         j                  j                  t         j                  j                  t              d      }t
        j                  |      }| j                  |j                  d       | j                  |j                  d       | j                  |j                  ddg       | j                  |j                  t        j                  t        j                  g       y )Nrn   ro   rp   r	   rI   )rq   rr   rs   rt   ru   r   create_from_filer(   rx   ry   assertInr4   r   r    r3   SRGBA)r)   rz   loaded_images      r.   test_image_create_from_filez%ImageTest.test_image_create_from_file   s    bggooh7<>J))*5L\''-\((#. 	MM,''!Q0MM!!K$4$4k6G6G#Hr]   N)__name__
__module____qualname__r/   r6   r=   rD   rG   rO   rU   r\   r_   ri   rl   r{   r    r]   r.   r   r   &   sF    ,
-
/	'
*  20 D.D
Ar]   r   __main__)__doc__rd   rq   r   rb   absl.testingr   r   numpyr   	PIL.Imager@   $mediapipe.python._framework_bindingsr   r   TEST_IMAGE_PATHr   r    TestCaser   r   mainr   r]   r.   <module>r      sr    < 	 	  
 ! 
   7 <7%%q!! qf z(--/ r]   