我试图实现视频上所示的结果(使用netcat的第3种方法)https://www.youtube.com/watch?v=sYGdge3T30o
目的是从树莓派流视频到Ubuntu PC,并使用openCV和Python处理它。
我使用以下命令将视频流发送到PC:
我使用以下命令将视频流发送到PC:
raspivid -vf -n -w 640 -h 480 -o - -t 0 -b 2000000 | nc 192.168.0.20 5777
,然后在PC上创建名为“fifo”的命名管道并重定向输出。 nc -l -p 5777 -v > fifo
然后我尝试读取管道并在 Python 脚本中显示结果
import cv2
import sys
video_capture = cv2.VideoCapture(r'fifo')
video_capture.set(cv2.CAP_PROP_FRAME_WIDTH, 640);
video_capture.set(cv2.CAP_PROP_FRAME_HEIGHT, 480);
while True:
# Capture frame-by-frame
ret, frame = video_capture.read()
if ret == False:
pass
cv2.imshow('Video', frame)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
# When everything is done, release the capture
video_capture.release()
cv2.destroyAllWindows()
然而,我最终却遇到了错误
[mp3 @ 0x18b2940] Header missing 这个错误是由命令 video_capture = cv2.VideoCapture(r'fifo')
产生的。
当我将PC上netcat的输出重定向到文件中,并在python中读取它时,视频可以正常工作,但速度快了约10倍。
我知道问题出在python脚本上,因为nc传输是有效的(到文件),但我无法找到任何线索。
如何才能实现提供的视频所示的结果(方法3)?