
    hh                        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 dl
mZ d dl
mZ d	 Zej                  j!                  d
ej"                  ej$                  ej&                  ej(                  g      ej                  j!                  ddddgfdddgfddg dfddg dfdddgfg      d               Zej                  j!                  d
ej"                  ej$                  ej&                  ej(                  g      ej                  j!                  dg d      d               Zd Zej                  j!                  ddddddg dg      d        Zej                  j!                  ddddddgd d ggdd!gd d"ggd!d!gd"d"gggfdddddgd!d!ggdd gd!d"ggd d gd"d"gggfdd#d#ddgd d gd$d$ggdd!gd d"gd$d%ggdd&gd d'gd$d(ggd!d!gd"d"gd%d%ggd!d&gd"d'gd%d(ggd&d&gd'd'gd(d(gggfdd#d#ddgd!d!gd&d&ggdd gd!d"gd&d'ggdd$gd!d%gd&d(ggd d gd"d"gd'd'ggd d$gd"d%gd'd(ggd$d$gd%d%gd(d(gggfdddddgd d gd"d"gd!d!gggfg      d)        Zej                  j!                  d*d+d,g      d-        Zy).    )shuffleN)assert_allclose)assert_array_equal)integral_image)haar_like_feature)haar_like_feature_coord)draw_haar_like_featurec                     t        j                  dt         j                        } t        |       }d}t	        j
                  t              5  t        |dddd|       t        dd|       t        | dddd|       d d d        t        ddd      \  }}t	        j
                  t              5  t        |dddd|d d |	       d d d        y # 1 sw Y   QxY w# 1 sw Y   y xY w)
N   r   dtypeunknown_typer   r   feature_typetype-2-x   r   feature_coord)
nponesfloat32r   pytestraises
ValueErrorr   r   r	   )imgimg_iir   
feat_coord	feat_types        ]/var/www/html/dev/engine/venv/lib/python3.12/site-packages/skimage/feature/tests/test_haar.pytest_haar_like_feature_errorr!      s    
''&


+CC F!L	z	" K&!Q1<H1<@sAq!Q\JK
 4Aq*EJ		z	" 
Aq!QYr]*	

 
K K
 
s   1C.CCC"r   z1feature_type,shape_feature,expected_feature_valuer   )T   g        type-2-ytype-3-x)*   )g      g      g       g      type-3-ytype-4)$   c                     t        j                  d|      }t        |      }t        |dddd|       }t	        t        j
                  t        j                  |            |       y )Nr   r   r   r   r   )r   r   r   r   r   sortunique)r   shape_featureexpected_feature_valuer   r   r   haar_features          r    test_haar_like_featurer0       sO     ''&
&CC F$VQ1alSLBGGBIIl346LM    r   r   r#   r$   r'   r(   c                    t        j                  d|       }t        |      }|j                  }d|j                  v r/t        j                  |j                  j                  dd            }t        |dddd|      }|j                  |k(  sJ y )	Nr   r   uintu r   r   r   )r   r   r   r   namereplacer   )r   r   r   r   expected_dtyper/   s         r    !test_haar_like_feature_fused_typer:   3   s~     ''&
&CC F\\N$$$."5"5"="=c2"FG$VQ1alSL///r1   c                      t        j                  dt         j                        } t        |       }g d}t	        |dddd|      }t	        |dddd      }t        ||       y )Nr   r   r2   r   r   r   )r   r   int8r   r   r   )r   r   r   	haar_listhaar_alls        r    test_haar_like_feature_listr?   C   sU    
''&
(CC FML!&!Q1<PI Aq!4Hy(+r1   )r#   r$   r(   c           
         t        j                  dt         j                        }t        |      }t	        | t
              rZt        |        t        | D cg c]  }t        dd|       c} \  }}t        j                  |      }t        j                  |      }nt        dd|       \  }}t        |dddd||      }t        |dddd|       }t        ||       y c c}w )Nr   r   r   r   r   )r   r   r<   r   
isinstancelistr   zipr   concatenater   r   )r   r   r   feat_tr   r   haar_feature_precomputedr/   s           r    "test_haar_like_feature_precomputedrG   L   s     ''&
(CC F,% 	 #BNO%aF3O!

I ^^J/
NN9-	 71l K
I01a*  %VQ1aFL/> Ps   Cz(feature_type,height,width,expected_coord   )r   r   )r      )rI   r   )rI   rI   r   )r   rH   )rI   rH   )rH   r   )rH   rI   )rH   rH   c                     t        |||       \  }}t        j                  |D cg c]  }| c}      }t        ||       t        j                  || k(        sJ y c c}w )N)r   r   arrayr   all)r   heightwidthexpected_coordr   r   hfs          r    test_haar_like_feature_coordrQ   l   sW    t 4E6<PJ	
3"234Jz>266)|+,,, 4s   	Azmax_n_features,nnz_values)N.   )rI      c           
         t        j                  dt         j                        }t        ddd      \  }}t	        |dddd|| d      }t	        |dddd|| d       |j
                  dk(  sJ t        j                  |      |k(  sJ y )Nr   r   r   r(   r   )max_n_featuresrng)r   r   r   )r   zerosr   r   r	   shapecount_nonzero)rU   
nnz_valuesr   coord_images         r    test_draw_haar_like_featurer^      s    
((6
,C&q!X6HE1"Q1a~1E 31aE.VWX;;)###E"j000r1   )randomr   r   numpyr   numpy.testingr   r   skimage.transformr   skimage.featurer   r   r	   r!   markparametrizeuint8r<   r   float64r0   r:   r?   rG   rQ   r^    r1   r    <module>ri      s      ) , , - 3 2
" 288RWWbjj"**"MN7	USE"	USE"	U89	U89	53% 	N	 ON 288RWWbjj"**"MNN	0 O	0, *
?
?* . &!FF#34&!FF#34&!FF#34			
 &!FF#34&!FF#34&!FF#34			
 &!FF#3ff5EF&!FF#3ff5EF&!FF#3ff5EF&!FF#3ff5EF&!FF#3ff5EF&!FF#3ff5EF		
 &!FF#3ff5EF&!FF#3ff5EF&!FF#3ff5EF&!FF#3ff5EF&!FF#3ff5EF&!FF#3ff5EF		
 v 0662BVVDTUV		
_58r-s8r- 4z66JK1 L1r1   