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)