使用netcat将树莓派摄像头流式传输到PC

时间:2019-07-12 10:40:29

标签: opencv stream raspberry-pi fifo netcat

我想将RPi(3B +)的视频捕获流传输到PC(OS:Ubuntu)。由于我需要对传入的帧进行一些图像处理,因此我选择使用opencv的python。其概念是,视频流从Pi和Netcat通过Wifi发送到PC,并在到达PC时,在通过Python脚本读取fifo的同时,将流馈送到fifo。

我还尝试了mplayer的netcat版本,并且流的接收是无可挑剔的,但是当流被馈送到fifo时,就好像没有开始监听该特定端口一样。如果我使用一个简单的文本文件,它将被传入的字节填充,但是无法与py脚本同时读取。您能帮我如何使fifo和流媒体同时工作吗?

Raspberry代码:

raspivid -w 640 -h 480 -o - -t 30000 -b 2000000 | nc "IP" "PORT"

在PC上创建fifo:

#!/bin/bash
if [ -p fifo ]
then
  rm fifo
fi
mkfifo fifo

nc -l -k -p "PORT" > fifo

用于显示框架的Python代码:

import cv2
import numpy

cap = cv2.VideoCapture('fifo')
while(cap.isOpened()):
    ret, frame = cap.read()
    cv2.imshow('iGenius138 Drone',frame)
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break
cap.release()
cv2.destroyAllWindows()

0 个答案:

没有答案