Я написал этот скрипт на python, который создает веб-сервер и показывает потоковую передачу с USB-камеры:
#!/usr/bin/env python
from importlib import import_module
import os
import cv2
from flask import Flask, render_template, Response
from camera import Camera
from apscheduler.schedulers.background import BackgroundScheduler
img_counter = 0
app = Flask(__name__)
@app.route('/')
def index():
"""Video streaming home page."""
return render_template('index.html')
def gen(camera, flag):
if flag > 0:
print("{} written!"+flag)
global img_counter
"""Video streaming generator function."""
while (flag>0):
frame = camera.get_frame()
yield (b'--frame\r\n'
b'Content-Type: image/jpeg\r\n\r\n' + frame + b'\r\n')
@app.route('/video_feed/<flag>')
def video_feed(flag):
"""Video streaming route. Put this in the src attribute of an img tag."""
return Response(gen(Camera(), flag),
mimetype='multipart/x-mixed-replace; boundary=frame')
if __name__ == '__main__':
app.run(host='0.0.0.0', threaded=True)
Теперь класс Camera:
import time
import cv2
from base_camera import BaseCamera
img_counter = 0
class Camera(BaseCamera):
video_source = 0
@staticmethod
def set_video_source(source):
Camera.video_source = source
@staticmethod
def frames():
camera = cv2.VideoCapture(Camera.video_source)
if not camera.isOpened():
raise RuntimeError('Could not start camera.')
while True:
# read current frame
_, img = camera.read()
# encode as a jpeg image and return it
yield cv2.imencode('.jpg', img)[1].tobytes()
У меня также есть HTMLстраница, содержащая поток и кнопку, чтобы сделать снимок.Я хотел бы, чтобы, когда я нажимал на кнопку, снимок можно было сохранить.Это возможно?Управление потоковой передачей на веб-странице?
Спасибо