o
    +@qh                     @   s   d dl Z d dlZd dlZd dlmZ d dlZe e jj	d Z
dd Zdd Zdd	ed
edefddZdedefddZdejdejfddZdS )    N)detectar_rostroz#haarcascade_frontalface_default.xmlc                 C   s   t dd| S )Nz(?<!")(\b\w+\b)(?=\s*:)z"\1")resub)Ztexto r   d   C:\Users\Equipo\Documents\GitHub\reconocimiento-facial-lambda\src\utils\simulación_vida_avanzada.pysanitizar_json_no_estricto
   s   r   c                  C   s   d} dddd}| |fS )Nz
    {
        "es_persona": true,
        "usa_lentes": false,
        "usa_auriculares": false,
        "vida_detectada": true,
        "accesorios": false
    }
    iTo  2   io  )Zprompt_tokensZcompletion_tokenstotal_tokensr   )Zrespuesta_simuladausage_simulador   r   r   "simular_respuesta_openai_con_usage   s   
r   gpt-4or	   modeloreturnc                 C   s"   ddi}| | |d }t|dS )Nr   gh㈵>   )getround)r	   r   Zprecioscostor   r   r   estimar_costo_usd_por_tokens    s   
r   
video_pathc              
   C   s  t | }d}d }d }d}| rK| \}}|sqK|d7 }t |t j}t|}	|	d urG|d7 }|	\}
}}}|dkr?t|}|dkrGt|}| s|  i }i }|d ur|d urz]t	 \}}|
 }td|}|rr|dn|}zt|}W n tjy   t|}t|}Y nw td ttj|dd td	 ttj|dd t|d
 }td| d W n ty } zt|t ddd}W Y d }~nd }~ww ||dd|d|d|rtd| | d|dS d|dS )Nr            z
{[\s\S]*?}u   
[SIMULACIÓN - JSON LIMPIO]   )indentu   
[SIMULACIÓN - TOKEN USAGE]r	   z
[COSTO ESTIMADO]: $z USDresultado_limpio )Z
error_lhiarawvida_detectadaF
usa_lentesusa_auricularesd   )resultado_vidar   r   r   Zporcentaje_rostrosZtoken_usage)cv2VideoCaptureisOpenedreadcvtColorCOLOR_BGR2GRAYr   recortar_rostroreleaser   stripr   searchgroupjsonloadsJSONDecodeErrorr   printdumpsr   	Exceptionstrlocalsr   r   )r   capZtotal_framesZframe_openai_1Zframe_openai_2rostrosretframegrayZrostroxywhZopenai_resultador
   Zresultado_openaimatchr   Z	json_corrr   er   r   r   procesar_prueba_vida_avanzada(   sr   


r@   r8   c                 C   s   t | t j}tj|ddd}|D ]?\}}}}d}t|| d}t|| d}	t|| | | jd }
t|| | | jd }| |	|||
f }t |d  S d S )Ng?   )ZscaleFactorZminNeighbors   r   r   )   rC   )	r"   r&   r'   face_cascadedetectMultiScalemaxminshaperesize)r8   r9   r6   r:   r;   r<   r=   marginx1y1x2y2Zrostro_recortador   r   r   r(   l   s   r(   )r   )r"   r-   r   Zsrc.validators.deteccionr   numpynpCascadeClassifierdatahaarcascadesrD   r   r   intr3   floatr   dictr@   ndarrayr(   r   r   r   r   <module>   s    D