76 lines
2.8 KiB
Python
76 lines
2.8 KiB
Python
import FaceUtils, DataUtils
|
|
from compreface import CompreFace
|
|
import yaml
|
|
from compreface.service import RecognitionService
|
|
from compreface.collections import FaceCollection
|
|
from compreface.collections.face_collections import Subjects
|
|
import cv2
|
|
import tempfile
|
|
import json
|
|
import os
|
|
from flask import Flask, request, jsonify
|
|
|
|
# with open('config.yaml', 'r') as file:
|
|
# configData = yaml.safe_load(file)
|
|
# DOMAIN: str = configData['compreface_service']['DOMAIN']
|
|
# PORT: str = configData['compreface_service']['PORT']
|
|
# API_KEY: str = configData['compreface_service']['API_KEY']
|
|
# compre_face: CompreFace = CompreFace(DOMAIN, PORT)
|
|
# # recognition 是服务实例
|
|
# recognition: RecognitionService = compre_face.init_face_recognition(API_KEY)
|
|
# # face_collection是人脸集合
|
|
# face_collection: FaceCollection = recognition.get_face_collection()
|
|
# subjects: Subjects = recognition.get_subjects()
|
|
#
|
|
# recognition_face_data = recognition.recognize(image_path=r'C:\Users\admin\Desktop\项目\jingzhu\face_project\compreface_utils\5.jpg')
|
|
# print(recognition_face_data)
|
|
import cv2
|
|
|
|
|
|
def draw_faces(image_path, recognition_data):
|
|
# 读取图像
|
|
image = cv2.imread(r'C:\Users\admin\Desktop\imgs\jingzhuImgs\5.jpg')
|
|
|
|
# 检查图像是否成功加载
|
|
if image is None:
|
|
print("Failed to load image.")
|
|
return
|
|
|
|
# 遍历识别结果中的每一个结果
|
|
for face_data in recognition_data['result']:
|
|
# 获取边界框坐标
|
|
box = face_data['box']
|
|
x_min = box['x_min']
|
|
y_min = box['y_min']
|
|
x_max = box['x_max']
|
|
y_max = box['y_max']
|
|
|
|
# 画出边界框
|
|
cv2.rectangle(image, (x_min, y_min), (x_max, y_max), (0, 255, 0), 2)
|
|
|
|
# 获取名称(如果有)
|
|
if face_data['subjects']:
|
|
subject_name = face_data['subjects'][0]['subject']
|
|
# 在框下方显示名字
|
|
cv2.putText(image, subject_name, (x_min, y_max + 20), cv2.FONT_HERSHEY_SIMPLEX, 0.6, (0, 255, 0), 2)
|
|
|
|
# 显示图像
|
|
cv2.imwrite('out.jpg', image)
|
|
cv2.waitKey(0)
|
|
cv2.destroyAllWindows()
|
|
|
|
|
|
# 测试数据和函数
|
|
recognition_face_data = {
|
|
'result': [
|
|
{'box': {'probability': 0.99981, 'x_max': 1207, 'y_max': 1348, 'x_min': 1092, 'y_min': 1234},
|
|
'subjects': [{'subject': 'liuxing', 'similarity': 0.45167}]},
|
|
{'box': {'probability': 0.99575, 'x_max': 853, 'y_max': 1308, 'x_min': 759, 'y_min': 1220},
|
|
'subjects': [{'subject': 'liudehua', 'similarity': 0.9288}]},
|
|
{'box': {'probability': 0.87615, 'x_max': 255, 'y_max': 1484, 'x_min': 175, 'y_min': 1388},
|
|
'subjects': [{'subject': 'tangzong', 'similarity': 0.48748}]}
|
|
]
|
|
}
|
|
|
|
# 调用函数
|
|
draw_faces('0', recognition_face_data) |