html - 使用 OpenCV Python Flask 流式传输多个视频
问题描述
我正在尝试使用 Flask Python 一次流式传输 2 个网络摄像头,但我无法这样做,当我运行我的代码时,两个网络摄像头都会亮起,但网页上只显示一个摄像头,我不确定。
这是我正在使用的代码:
from vCamera import VideoCamera
import pdb
app = Flask(__name__)
@app.route('/')
def index():
return render_template('index.html')
def gen(vCamera0):
while True:
frame0 = vCamera0.get_frame0()
yield (b'--frame0\r\n'
b'Content-Type: image/jpeg\r\n\r\n' + frame0 + b'\r\n\r\n')
frame2 = vCamera0.get_frame2()
yield (b'--frame2\r\n'
b'Content-Type: image/jpeg\r\n\r\n' + frame2 + b'\r\n\r\n')
@app.route('/video_feed0')
def video_feed0():
return Response(gen(VideoCamera()),
mimetype='multipart/x-mixed-replace; boundary=frame0')
@app.route('/video_feed2')
def video_feed2():
return Response(gen(VideoCamera()),
mimetype='multipart/x-mixed-replace; boundary=frame2')
if __name__ == '__main__':
app.run(host='127.0.0.1', debug=True)
这是我的相机文件:
import pdb
import cv2
fullbody_cascade = cv2.CascadeClassifier('haarcascade_fullbody.xml')
upperbody_cascade = cv2.CascadeClassifier('haarcascade_upperbody.xml')
class VideoCamera(object):
def __init__(self):
self.video0 = cv2.VideoCapture(0)
self.video2 = cv2.VideoCapture(2)
def __del__(self):
self.video0.release()
def get_frame0(self):
success0, frame0 = self.video0.read()
gray0 = cv2.cvtColor(frame0, cv2.COLOR_BGR2GRAY)
fullbody0 = fullbody_cascade.detectMultiScale(gray0)
upperbody0 = upperbody_cascade.detectMultiScale(gray0)
for (x,y,w,h) in fullbody0:
cv2.rectangle(frame0, (x,y), (x+w, y+h), (255,0,0), 2)
for (x,y,w,h) in upperbody0:
cv2.rectangle(frame0, (x,y), (x+w, y+h), (255,0,0), 2)
ret0, jpeg0 = cv2.imencode('.jpg', frame0)
return jpeg0.tobytes()
def get_frame2(self):
success2, frame2 = self.video2.read()
gray2 = cv2.cvtColor(frame2, cv2.COLOR_BGR2GRAY)
fullbody2 = fullbody_cascade.detectMultiScale(gray2)
upperbody2 = upperbody_cascade.detectMultiScale(gray2)
for (x,y,w,h) in fullbody2:
cv2.rectangle(frame2, (x,y), (x+w, y+h), (255,0,0), 2)
for (x,y,w,h) in upperbody2:
cv2.rectangle(frame2, (x,y), (x+w, y+h), (255,0,0), 2)
ret2, jpeg2 = cv2.imencode('.jpg', frame2)
return jpeg2.tobytes()
我对 Flask 很陌生,所以我不太确定我写的代码有什么问题。任何意见将是有益的!
解决方案
推荐阅读
- https - 502 弹性负载均衡器上的网关错误
- python - 如何在python中将列从未命名:0重命名为具有增量编号的列
- python - Jupyter 无法启动内核
- sql - 将输出保存为 Varbinary(max) 格式
- spring-cloud-stream - 将 Spring 云流应用程序 - Chelsea 迁移到 Horsham
- python - Aerospike - Python 客户端 - NoSQL 基准测试
- c# - 如何将字符串中的元素与“-”进行比较?
- python - PyQT5 - QLayout:尝试将 QLayout“”添加到 QMainWindow“Dialog”,它已经有一个布局
- mongodb - 一个 mongodb 分片显示出奇怪的缓慢行为
- javascript - 在javascript中创建元素的正确方法