Flask: Die Webcam des Benutzers kann nicht erfasst werden
Posted: 05 Jan 2025, 17:14
Ich möchte eine Website erstellen, bei deren Zugriff die Webcam des Benutzers eingeschaltet und die Frames davon verarbeitet werden. Das verarbeitete Bild sollte auf der Seite angezeigt werden.
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:
Was könnte die Ursache für diesen Fehler sein?
Die Anwendung wird auf einem Linux-Host ohne Videokamera gehostet.
Die Anwendung ist so geschrieben:
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)