所以我不确定这是否是提出这个问题的最佳地点,但我会试一试。 我有一些远程运行的 C++ openCV 代码。 openCV 代码在相机连续拍摄的图像上绘制不同的东西。 换句话说,当我在本地运行我的软件时,我可以这样做
imshow("some image", image);
然后看看我的鳕鱼在框架上画了什么。
但是现在我希望能够远程查看这些帧,就像视频流一样。有哪些可能性? 如何查看我的 openCV 软件正在输出什么?
最佳答案
如果您想远程创建视频流,则可以使用 GStreamer 通过网络创建管道。为此,您可以使用 cv::VideoWriter
将帧写入 GStreamer 管道。
cv::VideoWriter writer;
writer.open("appsrc ! videoconvert ! x264enc ! h264parse ! rtph264pay ! udpsink host=localhost port=9999", 0, (double)30, cv::Size(640, 480), true);
if (!writer.isOpened()) {
printf("=ERR= can't create video writer\n");
return -1;
}
while (true) {
/* Process the frame here */
writer << frame;
}
你可以用远程机器的 ip 来改变 localhost
。在接收机器上,您可以使用以下命令 gst-launch-1.0 udpsrc port=9999 !应用程序/x-rtp,编码名称=H264,有效载荷=96! rtph264depay ! h264解析! avdec_h264 !自动视频接收器
有关 GStreamer 的更多信息,您可以查看此 link .
关于c++ - 如何远程查看我的 openCV 输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42876827/