Repository navigation
Expand file tree
/
Copy pathvideocapture.py
More file actions
85 lines (79 loc) · 2.83 KB
/
Copy pathvideocapture.py
File metadata and controls
85 lines (79 loc) · 2.83 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
from flask import Flask
from flask import send_from_directory,Response,json,render_template,request
import postgresql
import cv2
import numpy as np
from PIL import Image
from sklearn.preprocessing import normalize
import io
from core.face_processor import FaceProcessor, get_vectors
from core.database_utils import DataBase
app = Flask(__name__)
app.config['UPLOAD_FOLDER'] = '/imgs/'
processor = FaceProcessor()
db = DataBase()
@app.route('/', methods=['POST', 'GET'])
def login():
return render_template('test.html')
@app.route('/js/<path:path>')
def send_js(path):
return send_from_directory('js', path)
@app.route('/css/<path:path>')
def send_css(path):
return send_from_directory('css', path)
@app.route('/webcamjs/<path:path>')
def send_library(path):
return send_from_directory('webcamjs', path)
@app.route('/test',methods=['POST', 'GET'])
def send_test():
print(request.files,request.form,request.data)
photo = request.files.get('webcam')
name = request.form.get('name')
img=np.array(Image.open(io.BytesIO(photo.read())))
cv2.imwrite('1.jpg',img)
return Response('complete', status=200, mimetype='application/text')
@app.route('/add_face', methods=['POST'])
def add_face():
global processor,db
photo = request.files.get('webcam')
name = request.form.get('name')
img=np.array(Image.open(io.BytesIO(photo.read())))
cv2.imwrite('1.jpg',img)
img = cv2.cvtColor(img,cv2.COLOR_RGB2BGR)
vec,ok = get_vectors(processor,img)
if ok == -1:
return Response('no faces found', status=400, mimetype='application/text')
if len(vec) != 512:
return Response('more than one face', status=400, mimetype='application/text')
res = db.add_to_db(vec,name,check=True)
if res[0] == 1:
return Response(res[1], status=200, mimetype='application/text')
if res[0] == -1:
return Response(res[1], status=400, mimetype='application/text')
@app.route('/find_face', methods=['POST'])
def find_face():
global processor,db
photo = request.files.get('webcam')
name = request.form.get('name')
img=np.array(Image.open(io.BytesIO(photo.read())))
cv2.imwrite('1.jpg',img)
img = cv2.cvtColor(img,cv2.COLOR_RGB2BGR)
vec,ok = get_vectors(processor,img)
if ok==-1:
return Response('no faces found', status=400, mimetype='application/text')
if len(vec)!=512:
vec = vec[:512]
res = db.find_closest(vec)
print(res)
if res[0] == 1:
return Response(res[1], status=200, mimetype='application/text')
else:
return Response(res[1], status=400, mimetype='application/text')
@app.route('/clear_db',methods=['GET'])
def clear():
global db
#res = db.clear_db()
print('db cleared')
return Response('ok', status=200, mimetype='application/text')
if __name__ == '__main__':
app.run(host='127.0.0.1',port =5007,debug=True)