compreface_api_crud/compreface_utils/test.py

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)