【问题标题】:Error capturing video using C++, Opencv and GStreamer使用 C++、Opencv 和 GStreamer 捕获视频时出错
【发布时间】:2020-07-03 08:20:30
【问题描述】:

我最近在 32 位 Windows 平台上用 Gstreamer 1.15.1 编译了 Opencv 4.2.0。当我尝试使用 Gstreamer 后端捕获视频时,视频捕获失败。这是代码和输出:

void main()
{
    VideoCapture cap("video/x-raw,format=YUV2,width=640,height=480,framerate=30/1 ! appsink", CAP_GSTREAMER);
   //VideoCapture cap(0,CAP_GSTREAMER);
    if (!cap.isOpened())
    {
        cout << "VideoCapture not opened" << endl;
        exit(-1);
    }

    Mat frame;

    while (true) {

        cap.read(frame);

        if (frame.empty())
            break;

        imshow("output", frame);
        if (waitKey(1) == 's')
            break;
    }
    destroyWindow("output");
}

这是输出:

(testNewOpencv.exe:7392): GStreamer-CRITICAL **: 20:08:16.574: gst_element_make_
from_uri: assertion 'gst_uri_is_valid (uri)' failed
[ WARN:0] global \modules\videoio\src\cap_gstreamer.cpp (713) cv::GStreamerCapture::open OpenCV | GStreamer warning: Error opening bin: no element "video"
[ WARN:0] global \modules\videoio\src\cap_gstreamer.cpp (480) cv::GStreamerCapture::isPipelinePlaying OpenCV | GStreamer warning: GStreamer: pipeline have not been created
VideoCapture not opened

有解决问题的建议吗?

【问题讨论】:

    标签: c++ windows opencv gstreamer video-capture


    【解决方案1】:

    试试这个: “ksvideosrc device-index=0 !videoscale !videorate !video/x-raw,width=640,height=480,framerate=30/1 !videoconvert !appsink”

    适用于我的代码和我刚刚构建的 OpenCV 4.3.0、gstreamer 1.15.1、32 位 Windows 10、USB 网络摄像头。我不太了解 gstreamer,无法解释管道 - 我从一些搜索结果中将其放在一起。

    我认为 ksvideosrc 来自 gst-plugins-bad。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-25
      • 2018-04-29
      • 1970-01-01
      • 2019-11-22
      • 2016-08-22
      • 2016-01-09
      • 2018-07-30
      相关资源
      最近更新 更多