То, что вы хотите сделать, это потоковая передача с Flask с помощью веб-камеры Stream и обрабатывать ее с помощью машинного обучения.Ваш основной сценарий для веб-сервера в флешке позволит вам загрузить файл index.html и затем потоковую передачу каждого кадра по пути / video_feed:
from flask import Flask, render_template, Response, jsonify
from camera import VideoCamera
import cv2
app = Flask(__name__)
video_stream = VideoCamera()
@app.route('/')
def index():
return render_template('index.html')
def gen(camera):
while True:
frame = camera.get_frame()
yield (b'--frame\r\n'
b'Content-Type: image/jpeg\r\n\r\n' + frame + b'\r\n\r\n')
@app.route('/video_feed')
def video_feed():
return Response(gen(video_stream),
mimetype='multipart/x-mixed-replace; boundary=frame')
if __name__ == '__main__':
app.run(host='127.0.0.1', debug=True,port="5000")
Затем вам понадобится класс VideoCamera, с которым вы будете работатькаждый кадр и где вы можете сделать каждый прогноз или обработку вы хотите на кадрах.Файл camera.py :
class VideoCamera(object):
def __init__(self):
self.video = cv2.VideoCapture(0)
def __del__(self):
self.video.release()
def get_frame(self):
ret, frame = self.video.read()
# DO WHAT YOU WANT WITH TENSORFLOW / KERAS AND OPENCV
ret, jpeg = cv2.imencode('.jpg', frame)
return jpeg.tobytes()
И, наконец, страница, показывающая поток видео в html-файле index.html (в шаблонах папка):
<!DOCTYPE html>
<html lang="en">
<head>
<title>Video Stream</title>
</head>
<body>
<img src="{{ url_for('video_feed') }}" />
</body>
</html>