Я пытаюсь создать приложение Flask, которое позволит пользователям использовать их веб-камеру в качестве детектора движения, и у меня есть рабочий код в OpenCV, который обнаруживает движение, но сейчас он использует только кулачок локальной машины (т.е. сервер). Я не знаю, как захватывать изображения / видео с клиента, а не с сервера, а затем передавать его для обнаружения движения с помощью OpenCV.
Я нашел эту статью https://kirupa.com/html5/accessing_your_webcam_in_html5.htm, которая использует HTML5 и JS для захвата канала от клиента, но не показывает способ использовать его с OpenCV.
Вот код для маршрута в приложении фляги
@app.route('/camera')
@login_required
def camera():
return Response(get_frame(), mimetype='multipart/x-mixed- replace; boundary=frame')
А вот get_frame (), переданный в ответе выше
def get_frame():
camera_port = 0 # Assigns which webcame to detect if user has more than one webcam
camera = cv2.VideoCapture(camera_port) # Creates a camera object
first_frame = None # This variable will store the first image as a base image for comparing with images thereafter
# Starts the while loop to stream feed
while True:
status = 0
check, frame = camera.read()
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) # Converts to gray scale
gray = cv2.GaussianBlur(gray, (21, 21), 0)
....
....
imgencode = cv2.imencode('.jpg',frame)[1]
image_data = imgencode.tostring()
yield (b'--frame\r\n'
b'Content-Type: text/plain\r\n\r\n' + imageData + b'\r\n')