def register(): global faces_db upload_file = request.files['image'] user_name = request.values.get("name") if upload_file: try: image = cv2.imdecode(np.frombuffer(upload_file.read(), np.uint8), cv2.IMREAD_UNCHANGED) faces, landmarks = mtcnn_detector.detect(image) if faces.shape[0] is not 0: faces_sum = 0 bbox = [] points = [] for i, face in enumerate(faces): if round(faces[i, 4], 6) > 0.95: bbox = faces[i, 0:4] points = landmarks[i, :].reshape((5, 2)) faces_sum += 1 if faces_sum == 1: nimg = face_preprocess.preprocess(image, bbox, points, image_size='112,112') cv2.imencode('.png', nimg)[1].tofile('face_db/%s.png' % user_name) # 更新人脸库 faces_db = load_faces(face_sess, inputs_placeholder, embeddings) return str({"code": 0, "msg": "success"}) return str({"code": 3, "msg": "image not or much face"}) except: return str({"code": 2, "msg": "this file is not image or not face"}) else: return str({"code": 1, "msg": "file is None"})
from flask_cors import CORS from utils import face_preprocess from utils.utils import feature_compare, load_mtcnn, load_faces, load_mobilefacenet, list_to_json app = Flask(__name__) # 允许跨越访问 CORS(app) # 人脸识别阈值 VERIFICATION_THRESHOLD = config.VERIFICATION_THRESHOLD # 检测人脸检测模型 mtcnn_detector = load_mtcnn() # 加载人脸识别模型 face_sess, inputs_placeholder, embeddings = load_mobilefacenet() # 加载已经注册的人脸 faces_db = load_faces(face_sess, inputs_placeholder, embeddings) # 人脸识别 def recognition_face(frame): try: faces, landmarks = mtcnn_detector.detect(frame) if faces.shape[0] is not 0: faces_sum = 0 for i, face in enumerate(faces): if round(faces[i, 4], 6) > 0.95: faces_sum += 1 if faces_sum == 0: return # 人脸信息 info_bbox = np.zeros((faces_sum, 4))