【问题标题】:C++ Cannot integrate JPEG pipeline in OpenCVC++ 无法在 OpenCV 中集成 JPEG 管道
【发布时间】:2018-06-06 01:41:04
【问题描述】:

我查看了 OpenCV 和 Gstreamer 上的大量线程,但根本无法解决我的错误问题。我正在尝试在 OpenCV 中打开 Gstreamer 管道。我已经用 GStreamer 构建了 OpenCV,它在 CMake 步骤中显示“是”,表明 OpenCV 构建成功。从命令行检索流的命令可以正常工作,但它只是显示一个帧并在 OpenCV 中挂起。

我的服务器语法:

gst-launch-1.0 v4l2src device="/dev/video0" ! video/x-raw,format=I420,width=640,height=480,framerate=15/1 ! jpegenc ! rtpjpegpay ! udpsink host=<IP Address> port=5000  

我在 OpenCV for Client (C++) 中的语法:

Mat frame;

//create video capture from video camera
VideoCapture cap("udpsrc port=5000 ! application/x-rtp,encoding-
name=JPEG,payload=26 ! rtpjpegdepay ! jpegdec ! autovideosink ! appsink");

cap.set(CV_CAP_PROP_FRAME_WIDTH, 640);
cap.set(CV_CAP_PROP_FRAME_HEIGHT, 480);
for(;;) 
{
    cap >> frame;

    char c = (char)waitKey(1);

    //![display]
    imshow(window_name, frame);

    frame.release();
}

错误:

GStreamer 插件:嵌入式视频播放停止;模块 autovideosink0-actual-sink-xvimage 报告:输出窗口已关闭 OpenCV 错误:未指定的错误(GStreamer:无法启动管道) 在 icvStartPipeline 中,文件 /home/dev/Downloads/OpenCV/opencv-3.0.0/modules/videoio/src/cap_gstreamer.cpp, 在抛出一个实例后调用第 383 行终止 'cv::Exception' 什么():/home/dev/Downloads/OpenCV/opencv- 3.0.0/modules/videoio/src/cap_gstreamer.cpp:383:错误:(-2)GStreamer:无法在函数icvStartPipeline中启动管道

请提供任何帮助,我已经完成了至少 20 篇 Stack 帖子,除了在 OpenCV 中启用 Gstreamer 之外,我还没有更接近开始的时间。我什至尝试了不同版本的 OpenCV。

谢谢

【问题讨论】:

    标签: c++ opencv image-processing gstreamer gstreamer-1.0


    【解决方案1】:

    VideoCapture cap("udpsrc port=5000 !application/x-rtp,encoding-name=JPEG,payload=26 !rtpjpegdepay !jpegdec !videoconvert !appsink");

    今天在深入研究 Gstreamer 文档后,我解决了这个问题。添加 videoconvert 解决了这个问题。根据 Gstreamer 文档,videoconvert 自动将数据转换为适用于 appsink 的格式。这使得它可以在 OpenCV VideoCapture 中正确读取。

    【讨论】:

      猜你喜欢
      • 2017-12-09
      • 2021-03-13
      • 2014-12-13
      • 2020-01-06
      • 2019-04-12
      • 2017-01-16
      • 1970-01-01
      • 1970-01-01
      • 2021-12-12
      相关资源
      最近更新 更多