所以我不确定这是否是提出这个问题的最佳地点,但我会尝试一下。 我有一些远程运行的C ++ openCV代码。 openCV代码在相机不断捕获的图像上绘制不同的东西。 换句话说,当我在本地运行我的软件时,我可以做到
imshow("some image", image);
然后看看我的鳕鱼画在画框上的东西。
但是现在我希望能够远程看到这些帧,就像视频流一样。有什么可能性? 如何查看openCV软件输出的内容?
答案 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,你可以尝试一下。