imutils VideoStream returns NoneType 同时与烧瓶集成
imutils VideoStream returns NoneType while integrating with flask
所以我想使用 imutils VideoStream 创建一个视频流并将其放在网络上。这是代码:
camera_web.py
from flask import Flask, render_template, Response
from imutils.video import VideoStream
from imutils.video import FPS
import cv2
app = Flask(__name__)
vs = VideoStream(src=0).start()
@app.route('/')
def index():
""" Video streaming home page """
return render_template('index.html')
def gen():
rval, frame = vs.read()
cv2.imwrite('t.jpg', frame)
yield (b'--frame\r\n'
b'Content-Type: image/jpeg\r\n\r\n' + open('t.jpg', 'rb').read() + b'\r\n')
@app.route('/video_feed')
def video_feed():
return Response(gen(), mimetype='multipart/x-mixed-replace; boundary=frame')
if __name__ == '__main__':
app.run(host='0.0.0.0', debug = True, port = 80)
index.html
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Vehicle Counter Web</title>
</head>
<body>
<h1>Vehicle Counter Demo</h1>
<img src="{{ url_for('video_feed') }}">
</body>
</html>
现在当我 运行 它时,它 return 是错误:
[ WARN:0] videoio(MSMF): OnReadSample() is called with error status:
-1072875772 [ WARN:0] videoio(MSMF): async ReadSample() call is failed with error status: -1072875772 [ WARN:1] videoio(MSMF): can't grab
frame. Error: -1072875772
而且 return 我的任何视频流都不像这张照片:
是我的代码有问题,还是flask不支持imutils VideoStream?提前致谢。
好吧,原来我就是个笨蛋。代码应该是这样的:
camera_web.py
from flask import Flask, render_template, Response
from imutils.video import WebcamVideoStream
from imutils.video import FPS
import imutils
import time
import cv2
app = Flask(__name__)
@app.route('/')
def index():
""" Video streaming home page """
return render_template('index.html')
def gen():
vs = WebcamVideoStream(src=1).start()
time.sleep(2.0)
while True:
frame = vs.read()
frame = imutils.resize(frame, width=500)
rgb = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
cv2.imwrite('t.jpg', frame)
yield (b'--frame\r\n'
b'Content-Type: image/jpeg\r\n\r\n' + open('t.jpg', 'rb').read() + b'\r\n')
@app.route('/video_feed')
def video_feed():
return Response(gen(), mimetype='multipart/x-mixed-replace; boundary=frame')
if __name__ == '__main__':
app.run(host='0.0.0.0', debug=True, port=80)
我们开始了!我们现在应该可以看到视频流了。
Link to the image
所以我想使用 imutils VideoStream 创建一个视频流并将其放在网络上。这是代码:
camera_web.py
from flask import Flask, render_template, Response
from imutils.video import VideoStream
from imutils.video import FPS
import cv2
app = Flask(__name__)
vs = VideoStream(src=0).start()
@app.route('/')
def index():
""" Video streaming home page """
return render_template('index.html')
def gen():
rval, frame = vs.read()
cv2.imwrite('t.jpg', frame)
yield (b'--frame\r\n'
b'Content-Type: image/jpeg\r\n\r\n' + open('t.jpg', 'rb').read() + b'\r\n')
@app.route('/video_feed')
def video_feed():
return Response(gen(), mimetype='multipart/x-mixed-replace; boundary=frame')
if __name__ == '__main__':
app.run(host='0.0.0.0', debug = True, port = 80)
index.html
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Vehicle Counter Web</title>
</head>
<body>
<h1>Vehicle Counter Demo</h1>
<img src="{{ url_for('video_feed') }}">
</body>
</html>
现在当我 运行 它时,它 return 是错误:
[ WARN:0] videoio(MSMF): OnReadSample() is called with error status: -1072875772 [ WARN:0] videoio(MSMF): async ReadSample() call is failed with error status: -1072875772 [ WARN:1] videoio(MSMF): can't grab frame. Error: -1072875772
而且 return 我的任何视频流都不像这张照片:
是我的代码有问题,还是flask不支持imutils VideoStream?提前致谢。
好吧,原来我就是个笨蛋。代码应该是这样的:
camera_web.py
from flask import Flask, render_template, Response
from imutils.video import WebcamVideoStream
from imutils.video import FPS
import imutils
import time
import cv2
app = Flask(__name__)
@app.route('/')
def index():
""" Video streaming home page """
return render_template('index.html')
def gen():
vs = WebcamVideoStream(src=1).start()
time.sleep(2.0)
while True:
frame = vs.read()
frame = imutils.resize(frame, width=500)
rgb = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
cv2.imwrite('t.jpg', frame)
yield (b'--frame\r\n'
b'Content-Type: image/jpeg\r\n\r\n' + open('t.jpg', 'rb').read() + b'\r\n')
@app.route('/video_feed')
def video_feed():
return Response(gen(), mimetype='multipart/x-mixed-replace; boundary=frame')
if __name__ == '__main__':
app.run(host='0.0.0.0', debug=True, port=80)
我们开始了!我们现在应该可以看到视频流了。 Link to the image