在 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? [关闭]