face_recognition.cpython-312.pyc•9 kB
�
��gm � �t � d Z ddlZddlZddlZddlZddlmZmZm Z m
Z
mZ ddlZddl
mZmZmZ G d� d� Zy)u5 人脸识别模块
用于检测和提取人脸特征
� N)�List�Tuple�Optional�Dict�Any)�Image� ImageDraw� ImageFontc
� � e Zd ZdZd� Zdej deee e e e f fd�Z
dej dee e e e f dej fd�Zdedeeee e e e f eej ee f fd �Z
ddedeee e e e f dee defd
�Zy
)�FaceRecognitionu: 人脸识别类
用于检测和提取人脸特征
c � � t j d� | _ | j j d� t j
t j j dz � | _ | j j d� y )Nr u 加载人脸检测器z#haarcascade_frontalface_default.xmlu! 人脸识别模块初始化完成) �logging� getLogger�logger�info�cv2�CascadeClassifier�data�haarcascades�face_cascade)�selfs �2D:\AIProject\mcpTest\src\utils\face_recognition.py�__init__zFaceRecognition.__init__ s^ � ��'�'�(9�:��������0�1��1�1�#�(�(�2G�2G�Jo�2o�p��������<�=� �image�returnc � � t j |t j � }| j j |dddt j
�� }|S )u� 检测图像中的人脸
Args:
image: 输入图像,OpenCV格式(BGR)
Returns:
人脸边界框列表,每个边界框为(x, y, w, h)格式
g�������?� )� r )�scaleFactor�minNeighbors�minSize�flags)r �cvtColor�COLOR_BGR2GRAYr �detectMultiScale�CASCADE_SCALE_IMAGE)r r �gray�facess r �detect_faceszFaceRecognition.detect_faces sS � � �|�|�E�3�#5�#5�6�� �!�!�2�2������)�)� 3�
�� �r �
face_locationc � � |\ }}}}||||z �|||z �f }t j |d� }t j |t j � }t j ddddd� } | j |� }
t j j |
� dkD r"|
t j j |
� z }
|
S )u� 提取人脸特征向量
Args:
image: 输入图像,OpenCV格式(BGR)
face_location: 人脸边界框,(x, y, w, h)格式
Returns:
人脸特征向量
)� r- )� r. )� r/ � r ) r �resizer$ r% �
HOGDescriptor�compute�np�linalg�norm)r r r+ �x�y�w�h�
face_imager( �hog�hog_featuress r �extract_face_encodingz%FaceRecognition.extract_face_encoding. s� � � #�
��1�a���1�Q�q�S�5�!�A�a�C�%�<�(�
� �Z�Z�
�J�7�
� �|�|�J��(:�(:�;�� ���
�H�f�f�a�H���{�{�4�(�� �9�9�>�>�,�'�!�+�'�"�)�)�.�.��*F�F�L��r �image_base64c � � t j |� }t j |t j � }t j |t
j � }|� | j j d� g g g fS | j |� }t |� dk( r | j j d� g g g fS g }g }|D ]� }| j ||� } |j | � |\ }
}}}
||||
z �|
|
|z �f }t j d|t
j dg� \ }}t j"