2017-07-05 49 views
2

我想实现的是,我有一个与pi相机v2的树莓3连接到我的本地wifi。我想从树莓派传送实时视频到运行Ubuntu的计算机。在我的电脑上,我试图用opencv实时处理该视频。下面的代码只是一个示例代码,用于测试在我的Ubuntu计算机上来自树莓派的视频。我使用netcat来传输视频,并在代码下方列出了shell脚本。从Raspberry pi流视频到Opencv应用程序在远程计算机上

#include <opencv2/highgui/highgui.hpp> 
#include <opencv2/imgproc/imgproc.hpp> 
#include <iostream> 
using namespace std; 
using namespace cv; 

int main(int argc, char** argv) 
{ 


    VideoCapture cap; 
    cap.open("/dev/stdin"); 
    if (!cap.isOpened()) 
     return -1; 

    Mat edges; 
    namedWindow("edges",1); 
    for(;;){ 
     Mat frame; 
     cap>>frame; 
     imshow("edges",frame); 
     if(waitKey(30)>=0)break; 
    } 

    return 0; 
} 

这是在opencv中播放流的代码。

  1. 首先我使用重定向流到我的opencv应用程序。 nc -l -p 5001 | ./app
  2. 然后运行我的树莓相机并使用netcat进行流式处理 raspivid -t 999999 -o | nc x.x.x.x 5001 x是客户端电脑的ip地址。

这对我不起作用,但我用mplayer 通过运行nc -l -p 5001 | mplayer -fps 31 -cache 1024 - 它完美的工作。

我想我的问题是我没有正确捕获我的opencv应用程序的流。我需要帮助。

+0

请尝试和什么你实际上是试图实现更清晰一点,哪个代码在哪里运行,以及如何哟你编译它等等。广告它,你的代码是不完整的 - 至少没有头文件。你使用什么相机?你的网络是什么样的?每台计算机上运行什么操作系统? –

+0

我想我已经说得更清楚了。如果你能提供任何建议,将不胜感激。 –

+0

我会在Raspberry Pi上运行'raspivid'并将5秒的视频捕获到Raspberry Pi上的本地磁盘文件中。然后使用'FTP'或'scp'将文件传输到您的Ubuntu并使用'./app

回答

1

我花了大约4个小时试图使这项工作,并得到它在最后工作。我不是这是关键的一步,也没有说明为什么一定,但我发现它所有的作品,如果我在我的Ubuntu 16 LTS的VirtualBox安装以下软件包:

libtbb2 
ffmpeg 
libavcodec 
libavcodec-dev 
libavformat-dev 
libtbb-dev 
libswscale-dev 
libgtk2.0-dev 
libtbb-dev 
libjpeg-dev 
libpng-dev 
libtiff-dev 
libjasper-dev 
libdc1394-22-dev 
libv4l-dev 
libx264-dev 

,并在我的树莓派与运行相机:

raspivid -ih -w 1024 -h 768 -o - | nc 192.168.0.98 5001 

关键词:树莓派,RASPI,raspivid,摄像头,OpenCV的,流,流,netcat的,NC,网络,视频

+0

完美运作。如果添加-t 0参数,它将无限期地流。谢谢 –

+0

非常好!祝你的项目好运。 –

相关问题