0

我只是买这个:https ://www.amazon.fr/gp/product/B08CGVSRQV/ref=ppx_yo_dt_b_asin_title_o00_s00?ie=UTF8&psc= 1 ...我拥有一个gopro3,我想将它用作网络摄像头并与opencv一起工作.

我的系统:gopro3 => microHDMI 转 HDMI => HDMI 转 USB3(我在上面购买)=> 我的电脑。

在 Ubuntu 上,使用这个基本程序:

#include <iostream>
#include <opencv4/opencv2/opencv.hpp>
#include <opencv4/opencv2/videoio.hpp>

using namespace cv;

int main() {
    VideoCapture vid(0);
    if (!vid.isOpened()) {...}

    Mat frame;
    for(;;) {
        vid >> frame; // get a new frame from camera
        imshow("edges", frame);
        if (waitKey(30) >= 0) break;
    }
    vid.release(); destroyAllWindows(); return 0;
}

出现一个小窗口,大约 800/600,一切正常,延迟良好,fps 好,质量差但没什么奇怪的。如果我强制 1920/1080:

vid.set(3, 1920);
vid.set(4, 1080);

我可以看到我的视频延迟大约为 1 秒,可能为 5 fps;

我想,也许我的 USB3 有问题(用于捕获 HDMI),但我尝试使用限制为 30fps 的“guvcview”并且一切正常(延迟、fps、质量)。

我不知道如何用 1920/1080/60 和 opencv 读取我的 gopro(30fps 应该足够好)。Gopro 能做 1920/1080/60,next cable 也能,采集卡也能,Ubuntu 也能......

也许问题不是opencv而是Ubuntu配置。

任何想法 ?

4

1 回答 1

0

我有同样的问题,但在 Windows 上。指定视频捕获以使用 DSHOW 为我解决了这个问题

cv::VideoCapture cap(0 + cv::CAP_DSHOW);

但不幸的是,据我所知,DSHOW 仅适用于 Windows。但也许这是一个问题,你必须指定另一个 API 来读取视频流。

于 2020-11-21T19:39:33.733 回答