如何远程查看openCV输出?

时间:2017-03-18 16:21:47

标签: c++ opencv networking remote-access

所以我不确定这是否是提出这个问题的最佳地点,但我会尝试一下。 我有一些远程运行的C ++ openCV代码。 openCV代码在相机不断捕获的图像上绘制不同的东西。 换句话说,当我在本地运行我的软件时,我可以做到

imshow("some image", image);

然后看看我的鳕鱼画在画框上的东西。

但是现在我希望能够远程看到这些帧,就像视频流一样。有什么可能性? 如何查看openCV软件输出的内容?

2 个答案:

答案 0 :(得分:1)

如果要远程创建视频流,则可以使用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 ! application/x-rtp,encoding-name=H264,payload=96 ! rtph264depay ! h264parse ! avdec_h264 ! autovideosink

有关GStreamer的更多信息,您可以看到link

答案 1 :(得分:0)

通过使用tcp套接字编程,您可以通过网络发送图像元数据。 <{3}}有一个项目sable-netcv,你可以尝试一下。