a
    d                     @   sB   d dl Z d dlZd dlmZmZ dddZdddZdd
dZdS )    N)cossind   c                 C   s  |t j d }| t j d }|t j d }|du s<|du r^| jdd \}}|d }|d }|t|t|  | }	|t|t| t|t| t|   | }
|t| t|  | }|t|t| t|t| t|   | }|t| | }|t| t|  | }t| t|t|ft|	t|
fdd t| t|t|ft|t|fdd t| t|t|ft|t|fdd | S )zdraw head pose axis.   N   r   r         r   r   r   r   r   r   nppishaper   r   cv2lineint)imgyawpitchrolltdxtdysizeheightwidthx1y1x2y2x3y3 r"   l/var/www/html/stable-diffusion-webui/venv/lib/python3.9/site-packages/facexlib/visualization/vis_headpose.py	draw_axis   s"    00***r$        b@c              	   C   s0  |t j d }| t j d }|t j d }	|durV|durV|d|  }
|d|  }n2| jdd \}}|d d|  }
|d d|  }|t|t|	  |
 }|t|t|	 t|	t| t|   | }|t| t|	  |
 }|t|t|	 t|t| t|	   | }|t| |
 }|t| t|  | }t| t|
t|ft|t|fdd t| t|
t|ft|t|fdd t| t|t|ft|| |
 t|| | fdd t| t|t|ft|| |
 t|| | fdd t| t|
t|ft|t|fdd t| t|t|ft|| |
 t|| | fdd t| t|t|ft|| |
 t|| | fdd t| t|| |
 t|| | ft|| | d|
  t|| | d|  fdd t| t|| |
 t|| | ft|| | d|
  t|| | d|  fdd t| t|| |
 t|| | ft|| | d|
  t|| | d|  fdd t| t|t|ft|| |
 t|| | fdd t| t|t|ft|| |
 t|| | fdd | S )	zdraw head pose cube.
    Where (tdx, tdy) is the translation of the face.
    For pose we have [pitch yaw roll tdx tdy tdz scale_factor]
    r   Ng      ?r   r   r	   r   r
   r   )r   r   r   r   r   r   r   pyrZface_xZface_yr   r   r   r   r   r   r    r!   r"   r"   r#   draw_pose_cube#   sD    00**::*::$2$2$2::r)   Fc              	   C   s   t | } |rt| tj} d|d  dd|d  ddd|d  d }tj| |d| jd d fddd	d
d t| |d |d |d dd t	| |d |d |d dddd |d urt
||  d S )Nzy r   z.2fz, p z, zr       r   r   )ZfontFaceZ	fontScalecolorZ	thicknessr   )r   2   )r   r   r   )r   copyr   ZcvtColorZCOLOR_RGB2BGRitemZputTextr   r)   r$   Zimwrite)r   r   r   r   Z	save_pathZto_bgrZshow_stringr"   r"   r#   visualize_headposeQ   s    
:&"r0   )NNr   )NNr%   )NF)	r   numpyr   mathr   r   r$   r)   r0   r"   r"   r"   r#   <module>   s
   

.