68 lines
1.8 KiB
Python
68 lines
1.8 KiB
Python
from fastapi import FastAPI
|
||
from pydantic import BaseModel
|
||
from process import FaceHelper, FileError, ErrorMsg
|
||
import threading
|
||
import os
|
||
import time
|
||
app = FastAPI()
|
||
lock = threading.Lock()
|
||
|
||
|
||
facehelper = FaceHelper(
|
||
db_dir="./dbface",
|
||
)
|
||
|
||
class face(BaseModel):
|
||
img:str
|
||
|
||
class dbface(BaseModel):
|
||
img:str
|
||
optMode:str
|
||
imgName:str
|
||
|
||
@app.post("/refreshdb")
|
||
def refresh():
|
||
global facehelper
|
||
try:
|
||
with lock:
|
||
facehelper.updateDB(None, None, None, Onlyrefresh=True)
|
||
except FileError as e:
|
||
# return {"status":e.code, "detail":f"{e}"}
|
||
return {'code': e.code, 'msg': f"{e}", 'data': 'None'}
|
||
else:
|
||
return {'code': "300", 'msg': ErrorMsg['300'], 'data': 'None'}
|
||
|
||
|
||
@app.post("/facerecognition/")
|
||
def faceRecognition(input:face):
|
||
start = time.time()
|
||
global facehelper
|
||
try:
|
||
ret_data = facehelper.faceRecognition(input.img)
|
||
print("finished recognition...")
|
||
end = time.time()
|
||
print("runtime: ", end-start)
|
||
except Exception as e:
|
||
return {'code': e.code, 'msg': f"{e}", 'data': 'None'}
|
||
# return {"status":f"{e.code}", "detail":f"{e}"}
|
||
else:
|
||
return ret_data
|
||
return {"status":1, "name":identity, "resImg":res_img_base64}
|
||
|
||
|
||
@app.post("/updatedb/")
|
||
def updateDB(input:dbface):
|
||
global facehelper
|
||
# 在这儿加一句,只取imgName中第一个`.`前面的部分str
|
||
input.imgName = os.path.splitext(os.path.basename(input.imgName))[0]
|
||
|
||
try:
|
||
with lock:
|
||
facehelper.updateDB(input.img, input.optMode, input.imgName)
|
||
except Exception as e:
|
||
return {'code': e.code, 'msg': f"{e}", 'data': 'None'}
|
||
# return {"status":f"{e.code}", "detail":f"{e}"}
|
||
else:
|
||
return {'code': "300", 'msg': ErrorMsg['300'], 'data': 'None'}
|
||
|