linux – 如何远程处理(低延迟)Raspicam输出?
发布时间:2020-12-14 01:40:28 所属栏目:Linux 来源:网络整理
导读:由于Raspberry Pi的处理能力有限,我需要在远程机器上处理相机输出.本机是 Linux服务器,应使用OpenCV处理视频数据. 我发现了一种技术上可行的解决方案,但在1280×720分辨率下产生大约10秒的不可接受的高延迟,在640×360分辨率下产生大约17秒的高延迟.也许这是
由于Raspberry Pi的处理能力有限,我需要在远程机器上处理相机输出.本机是
Linux服务器,应使用OpenCV处理视频数据.
我发现了一种技术上可行的解决方案,但在1280×720分辨率下产生大约10秒的不可接受的高延迟,在640×360分辨率下产生大约17秒的高延迟.也许这是由于某些缓冲区大小太大造成的? 那么,到目前为止我的解决方案 在Raspberry PI上首先使用raspivid命令捕获视频,将此数据输出到标准输出并使用netcat进行传输: raspivid --timeout 0 --nopreview --intra 2 --width 1280 --height 720 --framerate 20 --output - | nc 192.168.1.108 5555 然后在接收部分(实际上在发送之前调用): nc -l -p 5555 | ./receiver 其中receiver是一个带有以下源代码的C应用程序: #include <opencv2/highgui/highgui.hpp> #include <iostream> int main() { cv::VideoCapture cap("/dev/stdin"); if(!cap.isOpened()) { std::cout << "Could not open '/dev/stdin'!" << std::endl; return -1; } cv::namedWindow("Receiver"); cv::Mat frame; while(cap.read(frame)) { cv::imshow("Receiver",frame); cv::waitKey(30); } cv::waitKey(0); return 0; } 题 如何将raspicam输出传输到(Linux)服务器,并能够使用启用OpenCV的C应用程序处理此数据.在帧的传输和该帧的实际处理之间需要低等待时间(<400ms是可接受的). 编辑:还需要高分辨率(1280×720或更高). 请原谅我的英文,如果有任何错误! 解决方法
您可以使用QWebSockets(Qt5). 您只需将图片从cv :: Mat转换为QByteArray并将其流式传输. 在720p,我通过LAN连接获得近15 FPS.
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |