
    uki!                         d 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 ej                  Zej                  Z G d dej                        Zedk(  r ej$                          yy)z;Tests for mediapipe.python._framework_bindings.image_frame.    N)absltest)image_framec                   N    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y)ImageFrameTestc                    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
ImageFrameImageFormatGRAY8
assertTruearray_equal
numpy_viewassertRaisesRegex
IndexErrorprintassertEqual)selfwhmatgray8_image_frames        \/home/cdr/jupyterlab/.venv/lib/python3.12/site-packages/mediapipe/python/image_frame_test.py(test_create_image_frame_from_gray_cv_matz7ImageFrameTest.test_create_image_frame_from_gray_cv_mat#   s%   As#V%5%5a%=qA
,,
		(!Q"((CC CI"0A0ALOOBNN3(9(D(D(FGH			
,F	G (aAg&'(			
O	< %ad#$%R*401	( (% %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_image_frames         r-   'test_create_image_frame_from_rgb_cv_matz6ImageFrameTest.test_create_image_frame_from_rgb_cv_mat1   s    %%a-v/?/?3/G(qA
,,
		(!Q)9JC CL k.>.>SIOOOBNN3(B(B(DEF			
O	< -OAq(N+,-R12- -   -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   r0   r   r   )r   r   r   r   r   r   uint16r1   r   r   SRGB48r!   r"   r#   r$   r%   r&   r'   )r(   r)   r*   r3   r+   rgb48_image_frames         r-   )test_create_image_frame_from_rgb48_cv_matz8ImageFrameTest.test_create_image_frame_from_rgb48_cv_mat=   s    %%a-v/?/?3/G(qA
,,
		)1a*:"))LC CL"0B0BMOOBNN3(9(D(D(FGH			
O	< /aHn-./R*734/ /r6   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   PILImage	fromarrayr   r   r   r   r   r    asarrayr!   r"   r#   r$   r%   r&   )r(   r)   r*   imgr,   s        r-   +test_create_image_frame_from_gray_pil_imagez:ImageFrameTest.test_create_image_frame_from_gray_pil_imageI   s   As#V%5%5a%=qA
))


		(!Qrxx@#GC" &&RZZ_>OO
rzz#(9(D(D(FGI			
,F	G (aAg&'(			
O	< %ad#$% %( (% %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   r   r2   rB   r!   r"   r#   r$   r%   r&   )r(   r)   r*   r3   rC   r4   s         r-   *test_create_image_frame_from_rgb_pil_imagez9ImageFrameTest.test_create_image_frame_from_rgb_pil_imageV   s    %%a-v/?/?3/G(qA
))


		(!Q)9JC ! %%BJJsO=OOO
rzz#(B(B(DEG			
O	< -OAq(N+,- - -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	      r8   r   RGBAr   r   )  rK   rK   )r   r   r?   r@   rA   r   r   r9   r   r   SRGBA64rB   astyper!   r"   r#   r$   r%   r&   )r(   r)   r*   r3   rC   rgba_image_frames         r-   -test_create_image_frame_from_rgba64_pil_imagez<ImageFrameTest.test_create_image_frame_from_rgba64_pil_imageb   s    %%a-v/?/?3/G(qA
))


		)1a*:"))LC " ((ZZ_##BII.0 	OO
rzz#(8(C(C(EFH			
O	< 0-./0 0 0s   '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   r1   r   r   r2   r#   r!   r"   r$   
ValueErrorcopy)r(   r)   r*   r3   r+   r4   output_ndarraycopied_ndarrays           r-   test_image_frame_numby_viewz*ImageFrameTest.test_image_frame_numby_viewo   s    %%a-v/?/?3/G(qA
,,
		(!Q)9JC !k.>.>SIO$//1NOOBNN3(B(B(DEF 
		
 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*   r3   offsetr+   r,   s          r-   test_cropped_gray8_imagez'ImageFrameTest.test_cropped_gray8_image   s    B$f&6&6r3&?qAHf
,,
		(!Q)9JC # &&!!#ffWnffWn&D"EFH 	OO
s66'>66'>9:(335	78    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   r1   r   r   r2   rZ   r!   r"   r#   )r(   r)   r*   r3   r[   r+   r4   s          r-   test_cropped_rgb_imagez%ImageFrameTest.test_cropped_rgb_image   s    B$f&6&6r3&?qAHf
,,
		(!Q)9JC ! %%!!#ffWnffWna&G"HIKO 	OO
s66'>66'>1<=&113	56r]   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   r2   r!   is_contiguoussysgetrefcountr"   r#   r'   gccollect)r(   r)   r*   r+   r4   initial_ref_countnp_viewnp_view2s           r-   0test_image_frame_numpy_view_with_contiguous_dataz?ImageFrameTest.test_image_frame_numpy_view_with_contiguous_data   s   DAq
))

HAq!9BHH

EC k.>.>SIOOOO11348OOBNN3(B(B(DEF ((*GS___57H17LM))+HS___57H17LMJJL 	S___57HIr]   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   r2   assertFalsera   rb   rc   r!   r"   r#   r'   rd   re   )r(   r)   r*   r+   r4   rf   rg   s          r-   4test_image_frame_numpy_view_with_non_contiguous_datazCImageFrameTest.test_image_frame_numpy_view_with_non_contiguous_data   s    DAq
))

HAq!9BHH

EC k.>.>SIO_22458OOBNN3(B(B(DEF((*GS___57HIJJLS___57HIr]   N)__name__
__module____qualname__r.   r5   r<   rD   rG   rO   rU   r\   r_   ri   rl    r]   r-   r   r   !   s;    2
3
5%
-0  86 J.Jr]   r   __main__)__doc__rd   r   rb   absl.testingr   r   numpyr   	PIL.Imager?   $mediapipe.python._framework_bindingsr   r   r   TestCaser   rm   mainrp   r]   r-   <module>ry      sj    B 	  
 ! 
   <%%##
]JX&& ]J@ z(--/ r]   