c++ - 如何远程查看我的 openCV 输出?

标签 c++ opencv networking remote-access

所以我不确定这是否是提出这个问题的最佳地点,但我会试一试。 我有一些远程运行的 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/

相关文章:

c++ - opencv wasm 构建在 Windows 上失败

c++ - 虚函数和 "no legal conversion for this pointer"

无法通过打开的端口访问 Docker 应用程序

networking - UDP可以重传丢失的数据吗?

c++ - 在 Qt Creator 中进入 Qt 源代码(在 Ubuntu Linux 中)

c++ - C CUDA 内核的 PtrStepSz(GpuMat) 数组

python - 未检测到 ArUco 标记

linux - 如何在 Linux 中禁用 TCP 慢启动?

c++ - 哪个 STL 容器可以切入两个或多个容器?

C++:将大型二进制文件(2GB 到 4GB)保存到 char* 中的 RAM?