Как создать веб-приложение для распознавания лиц с помощью Flask и OpenCV? - PullRequest
0 голосов
/ 13 апреля 2019

Я пытаюсь создать веб-приложение для распознавания лиц на моем 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()

Я хочу иметь возможность видеть то же самое, что и я, только на моем Малиновом Пи с фирменным знаком.

...