Skip to main content
Glama

MCP Agent Platform

face_recognition.cpython-312.pyc9 kB
� ��gm��t�dZddlZddlZddlZddlZddlmZmZm Z m Z m Z ddl Z ddl mZmZmZGd�d�Zy)u5人脸识别模块 用于检测和提取人脸特征 �N)�List�Tuple�Optional�Dict�Any)�Image� ImageDraw� ImageFontc ��eZdZdZd�Zdej deee e e e ffd�Z dej dee e e e fdej fd�Z de deeee e e e feej ee ffd �Z dde d eee e e e fd ee de fd �Zy )�FaceRecognitionu:人脸识别类 用于检测和提取人脸特征 c��tjd�|_|jjd�t j tj jdz�|_|jjd�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��tj|tj�}|jj |dddtj ��}|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)rr�gray�facess r� detect_faceszFaceRecognition.detect_facessS���|�|�E�3�#5�#5�6���!�!�2�2� �����)�)� 3� ��� r� face_locationc��|\}}}}||||z�|||z�f}tj|d�}tj|tj�}tjddddd�} | j |�} t jj| �dkDr"| t jj| �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) rrr+�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�� tj|�}tj|tj�}t j |t j�}|� |jjd�gggfS|j|�}t|�dk(r |jjd�gggfSg}g}|D]�}|j||�} |j| �|\} } } } || | | z�| | | z�f}t jd|t j dg�\}}tj"|�j%d�}|j|���|jjdt|��d ��|||fS#t&$r-}|jjd |���gggfcYd}~Sd}~wwxYw) u 处理Base64编码的图像,检测人脸并提取特征 Args: image_base64: Base64编码的图像数据 Returns: 人脸边界框列表,人脸特征向量列表,人脸图像Base64编码列表 N�无法解码图像数据ru未检测到人脸�.jpg�P�utf-8u 检测到u 个人脸u处理图像时出错: )�base64� b64decoder4� frombuffer�uint8r�imdecode� IMREAD_COLORr�errorr*�lenrr>�append�imencode�IMWRITE_JPEG_QUALITY� b64encode�decode� Exception)rr?� image_data� image_arrayrr)�face_encodings�face_images_base64�face�encodingr7r8r9r:r;�_�buffer�face_image_base64�es r� process_imagezFaceRecognition.process_imageMs���' � �)�)�,�7�J��-�-� �B�H�H�=�K��L�L��c�.>�.>�?�E��}�� � �!�!�"<�=��2�r�z�!��%�%�e�,�E��5�z�Q��� � � � �!5�6��2�r�z�!� �N�!#� �� =���5�5�e�T�B���%�%�h�/�"� ��1�a��"�1�Q�q�S�5�!�A�a�C�%�<�0� ��L�L���c�>V�>V�XZ�=[�\� ��6�$*�$4�$4�V�$<�$C�$C�G�$L�!�"�)�)�*;�<� =� �K�K� � �y��U�� �I�>� ?��.�*<�<� <��� � �K�K� � � 7��s�;� <��r�2�:� �� �s+�A>F�>F�CF� G�"G�=G�GNr)�namesc�� tj|�}tj|tj�}t j |t j�}|�|jjd�|S|�'tt|��D�cgc] }d|dz���� }}tjt j|t j��}t!j"|�} d} t%j&d| �} t+|�D]l\}\} } }}t j,|| | f| |z| |zfdd �|t|�kr||nd|dz��}| j/| t1| | z d �f|| d� ��nt jtj2|�t j4�}t j6d |t j8d g�\}}tj:|�j=d�Scc}w# t%j&d| �} n#t%j(�} YnxYwY��<xYw#t>$r*}|jjd|���|cYd}~Sd}~wwxYw)u<在图像上绘制人脸边界框和名称 Args: image_base64: Base64编码的图像数据 faces: 人脸边界框列表 names: 人脸对应的名称列表 Returns: 绘制了人脸边界框和名称的图像的Base64编码 NrAzPerson �rz simhei.ttfz simsun.ttc)r��r�r)�font�fillrB�FrDu绘制人脸时出错: ) rErFr4rGrHrrIrJrrK�rangerLr� fromarrayr$� COLOR_BGR2RGBr �Drawr �truetype� load_default� enumerate� rectangle�text�max�array� COLOR_RGB2BGRrNrOrPrQrR)rr?r)r^rSrTr�i� image_pil�draw� font_sizercr7r8r9r:�namerYrZr\s r� draw_faceszFaceRecognition.draw_facess0��/ ��)�)�,�7�J��-�-� �B�H�H�=�K��L�L��c�.>�.>�?�E��}�� � �!�!�"<�=�#�#��}�27��E� �2C�D�Q�7�1�Q�3�%��D��D����� � �U�C�<M�<M�(N�O�I��>�>�)�,�D��I� 4� �)�)�,� �B��$-�U�#3� W���<�A�q�!�Q�� � �e�a��V�a��c�1�Q�3�Z��a�H�$%�s�5�z�>�u�Q�x���1������ � �1�c�!�I�+�q�1�2�D�t�+� �V� W��L�L����)�!4�c�6G�6G�H�E�� � �V�U�S�5M�5M�r�4R�S�I�A�v��#�#�F�+�2�2�7�;� ;��?E�� 4�4�$�-�-�l�I�F�D��4�$�1�1�3�D���&� � �K�K� � � 7��s�;� <�� �� �sh�A;I �>I �H �%AI �6H� C>I � I �I�H*�)I�*I�I�I � I>�I9�3I>�9I>)N)�__name__� __module__� __qualname__�__doc__rr4�ndarrayrr�intr*r>�strr]rw�rrr r s����>��"�*�*���e�C��c�3�<N�6O�1P��.�2�:�:��e�C�QT�VY�[^�L^�F_��df�dn�dn��>0�#�0�%��U�3��S�RU�CU�=V�8W�Y]�^`�^h�^h�Yi�ko�ps�kt�8t�2u�0�f'+�; �s�; �4��c�3��S�>P�8Q�3R�; ��s�)�; �/2�; rr )r{rrE�numpyr4r�typingrrrrr�io�PILrr r r rrr�<module>r�s3��� � ���3�3� �+�+�n �n r

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/rolenet/McpAgentRobot'

If you have feedback or need assistance with the MCP directory API, please join our Discord server