Ich habe eine kleine Webanwendung in Flask geschrieben, aber aus irgendeinem Grund funktioniert cap = cv2.VideoCapture(0) nicht . Wenn der Benutzer auf die Website zugreift, tritt der folgende Fehler auf:
Code: Select all
[ WARN:0@2.499] global cap_v4l.cpp:999 open VIDEOIO(V4L2:/dev/video0): can't open camera by index
[ERROR:0@2.499] global obsensor_uvc_stream_channel.cpp:158 getStreamChannelGroup Camera index out of range
46.188.121.6 - - - - [05/Jan/2025 14:45:30] “GET /video_feed HTTP/1.1” 200 - -
Die Anwendung wird auf einem Linux-Host ohne Videokamera gehostet.
Die Anwendung ist so geschrieben:
Code: Select all
from flask import Flask, Response
import cv2
app = Flask(__name__)
def gen_frames():
cap = cv2.VideoCapture(0)
while True:
success, frame = cap.read()
if not success:
break
else:
# doing something with frame
# example: frame = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
ret, buffer = cv2.imencode('.jpg', frame)
frame = buffer.tobytes()
yield (b'--frame\r\n'
b'Content-Type: image/jpeg\r\n\r\n' + frame + b'\r\n')
@app.route('/video_feed')
def video_feed():
return Response(gen_frames(), mimetype='multipart/x-mixed-replace; boundary=frame')
@app.route('/')
def index():
return """
Your Video
Video
[img]/video_feed[/img]
"""
if __name__ == '__main__':
app.run(host='0.0.0.0', port=5000)