Я передаю видео с RaspberryPi Zero на мой P C с помощью raspivid и netcat:
raspivid -t 0 -n -w 320 -h 240 -hf -fps 30 -o - | nc PC_IP PORT
Теперь я хочу проанализировать это видео на RaspberryPi кадр за кадром, чтобы выполнить обнаружение объекта. Raspi должен реагировать на обнаружение объекта, поэтому я должен выполнить анализ Pi, пока я транслирую видео.
Моя идея состояла в том, чтобы создать именованный канал с помощью команды tee
и прочитать этот именованный канал. в программе python для получения кадров:
mkfifo streampipe
raspivid -t 0 -n -w 320 -h 240 -hf -fps 30-o - | tee nc PC_IP PORT | streampipe
Но это не работает, говорит sh1: 1: streampipe: not found
Моя python программа выглядит следующим образом:
import subprocess as sp
import numpy
FFMPEG_BIN = "ffmpeg"
command = [ FFMPEG_BIN,
'-i', 'streampipe', # streampipe is the named pipe
'-pix_fmt', 'bgr24',
'-vcodec', 'rawvideo',
'-an','-sn', # we want to disable audio processing (there is no audio)
'-f', 'image2pipe', '-']
pipe = sp.Popen(command, stdout = sp.PIPE, bufsize=10**8)
while True:
# Capture frame-by-frame
raw_image = pipe.stdout.read(640*480*3)
# transform the byte read into a numpy array
image = numpy.fromstring(raw_image, dtype='uint8')
image = image.reshape((480,640,3)) # Notice how height is specified first and then width
if image is not None:
analyse(image)...
pipe.stdout.flush()
У кого-нибудь есть идеи, как это сделать?
Спасибо за ваши ответы.