在 C++ 中使用 OpenCv 的 VideoCapture 大小错误

Posted

技术标签:

【中文标题】在 C++ 中使用 OpenCv 的 VideoCapture 大小错误【英文标题】:Wrong size of VideoCapture using OpenCv in C++ 【发布时间】:2021-04-22 05:44:52 【问题描述】:

我正在尝试使用 OpenCv 在 C++ 中制作实时跟踪应用程序。我的代码到目前为止工作正常,但显示的相机分辨率太小。如果我使用 Windows 相机应用程序拍摄照片/视频,分辨率为 1280x720,我的程序中显示的分辨率为 639x479。这是我的代码:

using namespace cv;
using namespace std;

int main(int argc)

    VideoCapture camera(0);
    if (!camera.isOpened()) 
        cerr << "ERROR: Could not open camera" << endl;
        return 1;
    

    namedWindow("Webcam");

    Mat frame;

    while (1) 
        camera >> frame;
        imshow("Webcam", frame);
        if (waitKey(1) >= 0) 
            break;
        
    

    return 0;

我尝试使用 resizeWindow("Webcam", 1280, 720),但窗口自动变回 639x479。如果我把窗口全屏,相机分辨率仍然是 639x479。我认为问题是某些 VideoCapture 默认设置,但我不确定。如何将捕获和显示的分辨率设置为 1280x720?

【问题讨论】:

这也可能是驱动问题(见answers.opencv,问题经常出现)。你也可以想出camera.set(CAP_PROP_FRAME_WIDTH, 1280.0) 和同样的高度。也许这可以工作 我会写这个作为一个答案,所以每个人都可以看到这是一个解决方案。 【参考方案1】:

这也可能是驱动问题(参见 answers.opencv,问题经常发生)。 你也可以试试camera.set(CAP_PROP_FRAME_WIDTH, 1280.0),高度也一样。

【讨论】:

以上是关于在 C++ 中使用 OpenCv 的 VideoCapture 大小错误的主要内容,如果未能解决你的问题,请参考以下文章

在 C++ 中使用 OpenCv 的 VideoCapture 大小错误

在 OpenCV (C++) 中使用 calcHist 的运行时错误

在 Beaglebone 中使用 openCV 编译 C++ 代码

如何使用 C++ 在 OpenCV 4.2.0 中使用 SIFT? [关闭]

如何在 OSX 中使用 C++ opencv highgui 将活动窗口设置为 opencv 图像

在简单的 C++ OpenCV 项目中使用 pthread