C 无法在OpenCV中集成JPEG管道

C++ Cannot integrate JPEG pipeline in OpenCV

本文关键字:集成 JPEG 管道 OpenCV      更新时间:2023-10-16

我已经透过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中的我的语法(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/home/dev/downloads/opencv/opencv- 3.0.0/模块/videoio/src/cap_gstreamer.cpp:383:错误:(--2)GSTREAMER:无法在函数ICVStartPipeline中启动管道

请提供我至少有20个堆栈帖子的任何帮助,而当我刚开始时,我在OpenCV中启用Gstreamer时,我不会更接近。我什至尝试了不同版本的OpenCV。

谢谢

videocapture cap(" udpsrc port = 5000!application/x-rtp,endoding-name = jpeg,pareload = 26!rtpjpegdepay!jpegdec!

今天,在浏览GStreamer文档的更多内容之后,我解决了这个问题。VideoConvert的添加解决了问题。根据GSTREAMER文档,VideoConvert会自动将数据转换为AppSink的适当格式。这允许在OpenCV videocapture中正确读取它。