gpt4 book ai didi

python - OpenCV Python,从命名管道读取视频

转载 作者:行者123 更新时间:2023-12-04 23:23:06 28 4
gpt4 key购买 nike

我正在尝试实现视频中显示的结果(使用 netcat 的方法 3)https://www.youtube.com/watch?v=sYGdge3T30o
它将视频从树莓派流式传输到 PC 并使用 openCV 和 python 处理它。

我使用命令

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

将视频流式传输到我的 PC,然后在 PC 上创建名称管道“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 数组是空的,所以有什么想法可以解决这个问题吗?

最佳答案

图像数组为空。由于 raw_image 也是空的,因此似乎没有读取视频。确保视频已打开并正在阅读。

关于python - OpenCV Python,从命名管道读取视频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60455998/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com