Как изменить форму выходного потока скрипта, чтобы он работал для потока cvlc с использованием Python?
Поток состоит из кадров, поступающих с камеры raspberry pi.
stream.py необходимо изменить:
import sys
import cv2
from picamera.array import PiRGBArray
from picamera import PiCamera
import time
RES_W = 640
RES_H = 480
camera = PiCamera()
camera.resolution = (RES_W, RES_H)
camera.framerate = 24 # FPS
rawCapture = PiRGBArray(camera, size=(RES_W, RES_H))
# allow the camera to warmup
time.sleep(2)
for frame in camera.capture_continuous(rawCapture, format="bgr"):
# image is apparently not the right format for cvlc
image = frame.array
# processing the image for face recognition purposes
# ...
# related to first reference
sys.stdout.buffer.write(image)
# clear the stream in preparation for the next frame
rawCapture.truncate(0)
Команда, которую я использовал для передачи выходного потока stream.py в cvlc , не сработала, потому что cvlc, похоже, не может правильно интерпретировать поток:
(сервер)
python3 stream.py | cvlc -vvv stream:///dev/stdin --sout '#standard{access=http,mux=ts,dst=:8090}' :demux=h264
Предполагается, что он будет доступен с использованием:
(клиент)
vlc http://raspberrypi:8090
и он работал без проблем через:
(сервер)
raspivid -o - -t 0 -n -w 640 -h 400 -fps 24 | cvlc -vvv stream:///dev/stdin --sout '#standard{access=http,mux=ts,dst=:8090}' :demux=h264
Для дальнейших ссылок:
- Отправка вывода OpenCV в поток VLC
- https://medium.com/xailient/face-tracking-in-python-using-xailient-face-detector-and-dlib-8345c5db27b8, хотя я решил не использовать dnn, а вместо этого:
- https://pypi.org/project/face-recognition/