将视频从 Raspberry pi 流式传输到远程计算机上的 Opencv 应用程序
Stream video from Raspberry pi to Opencv application on remote computer
我想要实现的是,我有一个带有 pi camera v2 的 raspberry 3 连接到我的本地 wifi。我想将实时视频从 raspberry pi 传输到计算机 运行ning Ubuntu。在我的电脑上,我正在尝试使用 opencv 实时处理该视频。下面的代码只是一个示例代码,用于在我的 Ubuntu 计算机上测试来自 raspberry pi 的视频。我正在使用 netcat 流式传输视频,我在代码下方列出了 shell 脚本。
#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中播放流的代码。
- 首先,我使用重定向流到我的 opencv 应用程序。
数控 -l -p 5001 | ./应用
- 然后 运行 我使用 raspberry 摄像头并使用 netcat 对其进行流式传输
raspivid -t 999999 -o | nc x.x.x.x 5001 x 是客户端电脑的 ip 地址。
这对我不起作用,但我已经用 mplayer 试过了
通过 运行ning nc -l -p 5001 | mplayer -fps 31 -cache 1024 - 效果很好。
我认为我的问题是我没有在我的 opencv 应用程序上正确捕获流。我需要帮助。
我花了大约 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
和 运行 我 Raspberry Pi 上的摄像头:
raspivid -ih -w 1024 -h 768 -o - | nc 192.168.0.98 5001
关键词: Raspberry Pi, RASPI, raspivid, camera, OpenCV, stream, streaming, netcat, nc, network, video
我想要实现的是,我有一个带有 pi camera v2 的 raspberry 3 连接到我的本地 wifi。我想将实时视频从 raspberry pi 传输到计算机 运行ning Ubuntu。在我的电脑上,我正在尝试使用 opencv 实时处理该视频。下面的代码只是一个示例代码,用于在我的 Ubuntu 计算机上测试来自 raspberry pi 的视频。我正在使用 netcat 流式传输视频,我在代码下方列出了 shell 脚本。
#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中播放流的代码。
- 首先,我使用重定向流到我的 opencv 应用程序。 数控 -l -p 5001 | ./应用
- 然后 运行 我使用 raspberry 摄像头并使用 netcat 对其进行流式传输 raspivid -t 999999 -o | nc x.x.x.x 5001 x 是客户端电脑的 ip 地址。
这对我不起作用,但我已经用 mplayer 试过了 通过 运行ning nc -l -p 5001 | mplayer -fps 31 -cache 1024 - 效果很好。
我认为我的问题是我没有在我的 opencv 应用程序上正确捕获流。我需要帮助。
我花了大约 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
和 运行 我 Raspberry Pi 上的摄像头:
raspivid -ih -w 1024 -h 768 -o - | nc 192.168.0.98 5001
关键词: Raspberry Pi, RASPI, raspivid, camera, OpenCV, stream, streaming, netcat, nc, network, video