Я пытаюсь создать веб-приложение для распознавания лиц на моем Raspberry Pi 3 Model B + для школьного проекта, использующего Flask и OpenCV, но у меня возникают проблемы с выполнением функции распознавания в Flask. Как мне написать код для этого?
Я следовал учебнику . Все отлично работает, но я не знаю, как перенести это в Flask. Я написал код для отображения видеопотока на веб-сервере и нарисовал прямоугольник вокруг лица, но я не до конца понимаю, что делать дальше.
main.py
import cv2
import time
from video import Camera
from flask import Flask, render_template, Response
app = Flask(__name__)
@app.route('/')
def index():
#Template in the 'templates' folder
return render_template('index.html')
def gen_frame():
while True:
frame = Camera()
yield (b'--frame\r\n'
b'Content-Type: image/jpeg\r\n\r\n' + frame + b'\r\n\r\n')
time.sleep(0.05)
@app.route('/video_feed')
def video_feed():
return Response(gen_frame(),
mimetype='multipart/x-mixed-replace; boundary=frame')
if __name__ == '__main__':
app.run(host='0.0.0.0', debug=False)
video.py
import cv2
from face_rec import Recognizer
face_cascade = cv2.CascadeClassifier('/home/pi/opencv/data/haarcascades/haarcascade_frontalface_default.xml')
cam = cv2.VideoCapture(0)
minW = 0.1*cam.get(3)
minH = 0.1*cam.get(4)
def Camera():
while True:
ret, img = cam.read()
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
faces = face_cascade.detectMultiScale(
gray,
scaleFactor = 1.3,
minNeighbors = 3,
minSize = (int(minW), int(minH)),
)
for(x,y,w,h) in faces:
cv2.rectangle(img, (x,y), (x+w,y+h), (0,255,0), 2)
return cv2.imencode('.jpeg', img)[1].tobytes()
Я хочу иметь возможность видеть то же самое, что и я, только на моем Малиновом Пи с фирменным знаком.