OpenCV Python, чтение видео из именованного канала - PullRequest
0 голосов
/ 28 февраля 2020

Я пытаюсь добиться результатов, как показано на видео (метод 3 с использованием netcat) https://www.youtube.com/watch?v=sYGdge3T30o Это для потоковой передачи видео с Raspberry Pi на P C и обработки его с использованием openCV и python.

Я использую команду

raspivid -vf -n -w 640 -h 480 -o - -t 0 -b 2000000 | nc 192.168.1.137 8000

для потоковой передачи видео на мой P C, а затем на P C я создал конвейер имен 'fifo' и перенаправил вывод

nc -l -p 8000 -v > fifo

затем я пытаюсь прочитать канал и отобразить результат в сценарии python

import cv2
import subprocess as sp
import numpy

FFMPEG_BIN = "ffmpeg.exe"
command = [ FFMPEG_BIN,
        '-i', 'fifo',             # fifo is the named pipe
        '-pix_fmt', 'bgr24',      # opencv requires bgr24 pixel format.
        '-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.frombuffer(raw_image, dtype='uint8')
    image = image.reshape((480,640,3))          # Notice how height is specified first and then width
    if image is not None:
        cv2.imshow('Video', image)

    if cv2.waitKey(1) & 0xFF == ord('q'):
        break
    pipe.stdout.flush()

cv2.destroyAllWindows()

Но я получил эту ошибку:

Traceback (most recent call last):
  File "C:\Users\Nick\Desktop\python video stream\stream.py", line 19, in <module>
    image = image.reshape((480,640,3))          # Notice how height is specified first and then width
ValueError: cannot reshape array of size 0 into shape (480,640,3)

Кажется, что массив numpy пуст, так что есть идеи, чтобы это исправить?

1 Ответ

0 голосов
/ 28 февраля 2020

массив изображений пуст. Похоже, что видео не было прочитано, поскольку raw_image также пусто. Убедитесь, что видео открыто и читается.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...