c++ 如何在OpenCV中打开GStreamer管道

ljo96ir5  于 11个月前  发布在  其他
关注(0)|答案(1)|浏览(138)

我尝试在OpenCV程序中使用GStreamer管道打开 webm 视频。
我在Visual Studio 19社区IDE中使用OpenCV 3.4.1。

#include <opencv2/opencv.hpp>

int main()
{
    std::string pipeline = "playbin uri=https://www.freedesktop.org/software/gstreamer-sdk/data/media/sintel_trailer-480p.webm";
    std::cout << "Using pipeline: \n" << pipeline << "\n";

    cv::VideoCapture cap(pipeline, cv::CAP_GSTREAMER);

    if (!cap.isOpened()) {
        std::cout << "Failed to open camera." << std::endl;
        return (-1);
    }

    cv::namedWindow("CSI Camera", cv::WINDOW_AUTOSIZE);
    cv::Mat img;

    std::cout << "Hit ESC to exit" << "\n";
    while (true)
    {
        if (!cap.read(img)) {
            std::cout << "Capture read error" << std::endl;
            break;
        }

        cv::imshow("CSI Camera", img);
        int keycode = cv::waitKey(10) & 0xff;
        if (keycode == 27) break;
    }

    cap.release();
    cv::destroyAllWindows();
    return 0;
}

字符串
我无法打开VieoCapture cap;我该怎么做?

ie3xauqp

ie3xauqp1#

要在cv::VideoCapture中使用GStreamer管道,它必须以appsink结束。appsink是一个GStreamer元素,允许应用程序(在本例中为OpenCV)从管道中取出缓冲区。
修改您的管道,使其看起来像下面这样:

std::string pipeline = "uridecodebin uri=https://www.freedesktop.org/software/gstreamer-sdk/data/media/sintel_trailer-480p.webm ! videoconvert ! video/x-raw,format=RGB ! appsink";

字符串

相关问题