o
    ß¥µi$  ã                   @   s4   d Z ddlZddlZddlmZ dd„ Zdd„ ZdS )zÒ
The implementation here is modified based on insightface, originally MIT license and publicly available at
https://github.com/deepinsight/insightface/blob/master/python-package/insightface/utils/face_align.py
é    N)Ú	transformc                 C   s  |d }|d }d}d}||ksJ ‚||ksJ ‚g d¢}t  |¡ d¡ t j¡}||kr>|| d }	|d d …df  |	7  < ||krT|| d }	|d d …df  |	7  < |}
t ¡ }| |
|¡ |jdd…d d …f }| j	d dkstJ ‚t
 |  ¡ |||f¡}t|
|ƒ}||fS )	Né   r   é`   ép   )
gÏfÕçjK>@g7À[ ÙI@gÒ Þ	bP@gqà-ÀI@gúíëÀ9H@góŽSt$ïQ@g®Ø_vOÆ@@g¬ZdW@gÚ¬ú\m]O@gEGrùW@)é   é   r   é   )ÚnpÚarrayÚreshapeÚastypeÚfloat32ÚtransÚSimilarityTransformÚestimateÚparamsÚshapeÚcv2Ú
warpAffineÚcopyÚGetAffinePoints)ÚimageÚsizeÚlmksÚdst_wÚdst_hÚbase_wÚbase_hÚbase_lmkÚdst_lmkÚslideÚsrc_lmkÚtformÚtÚ	dst_imageÚdst_pts© r&   úd/home/ubuntu/.local/lib/python3.10/site-packages/modelscope/models/cv/face_recognition/align_face.pyÚ
align_face
   s,   
r(   c                 C   s¢   |   ¡ }| jd dksJ ‚t| jd ƒD ]:}| |df |d  | |df |d   |d  ||df< | |df |d  | |df |d   |d	  ||df< q|S )
Nr   r   r   )r   r   )r   r   )r   r   )r   r   )r   r   )r   r   )r   r   Úrange)Úpts_inr   Úpts_outÚkr&   r&   r'   r   -   s   ÿÿÿÿr   )	Ú__doc__r   Únumpyr	   Úskimager   r   r(   r   r&   r&   r&   r'   Ú<module>   s    #