import os import cv2 import numpy as np import base64 import face_manage.manage as db_manage from flask import Flask, render_template, request, jsonify from extract import GetImageInfo app = Flask(__name__) UPLOAD_FOLDER = os.path.basename('uploads') app.config['UPLOAD_FOLDER'] = UPLOAD_FOLDER @app.route("/") def start_page(): print("Start") response = jsonify({"status": "Start"}) response.status_code = 200 response.headers["Content-Type"] = "application/json; charset=utf-8" return response @app.route("/enroll") def enroll(): file = request.files['image'] image = cv2.imdecode(np.fromstring(file.read(), np.uint8), cv2.IMREAD_UNCHANGED) db_manage.open_database(0) count, boxes, scores, landmarks, alignimgs, features = GetImageInfo(image, 5) for idx in range(0, count): db_manage.register_face('sample name', idx, boxes[idx], landmarks[idx], alignimgs[idx], features[idx]) # db_manage.clear_database() response = jsonify({"status": "True"}) response.status_code = 200 response.headers["Content-Type"] = "application/json; charset=utf-8" return response @app.route("/delete/all") def delete_all(): db_manage.open_database(0) db_manage.clear_database() response = jsonify({"status": "True"}) response.status_code = 200 response.headers["Content-Type"] = "application/json; charset=utf-8" return response @app.route("/match11") def match_1_1(): file1 = request.files['image1'] file2 = request.files['image2'] image1 = cv2.imdecode(np.fromstring(file1.read(), np.uint8), cv2.IMREAD_UNCHANGED) image2 = cv2.imdecode(np.fromstring(file2.read(), np.uint8), cv2.IMREAD_UNCHANGED) count1, boxes1, scores1, landmarks1, alignimgs1, features1 = GetImageInfo(image1, 1) count2, boxes2, scores2, landmarks2, alignimgs2, features2 = GetImageInfo(image2, 1) if count1 != 0 and count2 != 0: sim = db_manage.get_similarity(features1[0], features2[0]) if sim > db_manage.threshold: result = True else: result = False response = jsonify({"status": result}) response.status_code = 200 response.headers["Content-Type"] = "application/json; charset=utf-8" return response @app.route("/match1n") def match_1_n(): file = request.files['image'] image = cv2.imdecode(np.fromstring(file.read(), np.uint8), cv2.IMREAD_UNCHANGED) result, filename, sub_index = False, None, -1 count, boxes, scores, landmarks, alignimgs, features = GetImageInfo(image, 1) for idx in range(count): id, fn, sub_id = db_manage.verify_face(features[idx]) if id != -1: result, filename, sub_index = True, fn, id response = jsonify({"status": result, "filename": filename, "subIndex": sub_index}) response.status_code = 200 response.headers["Content-Type"] = "application/json; charset=utf-8" return response