我遇到的问题是无法更改OpenCV视频捕获的分辨率。无论如何,分辨率始终为640x480。我使用的代码是用C++编写的,并且使用的是opencv 3.4.8。我创建了一个非常简单的程序来实现这一点,但无论我尝试什么都似乎不起作用。
以下是完整的代码:
当我运行上述代码时,帧的大小始终为640x480。
我尝试使用
我尝试使用不同的相机/网络摄像头。
我尝试在创建
我尝试在不同的计算机上运行相同的程序。
结果始终是相同的640x480分辨率。
是否有什么简单的问题我遗漏了?我在SO上找到的每篇文章都只是指向使用
以下是完整的代码:
#include "opencv2/opencv.hpp"
using namespace cv;
int main(int argc, char** argv)
{
VideoCapture cap(0);
cap.set(CAP_PROP_FRAME_HEIGHT, 1080);
cap.set(CAP_PROP_FRAME_WIDTH, 1920);
// open the default camera, use something different from 0 otherwise;
// Check VideoCapture documentation.
if (!cap.open(0))
return 0;
for (;;)
{
Mat frame;
cap.read(frame);
if (frame.empty()) break; // end of video stream
imshow("this is you, smile! :)", frame);
if (waitKey(10) == 27) break; // stop capturing by pressing ESC
}
// the camera will be closed automatically upon exit
// cap.close();
return 0;
}
当我运行上述代码时,帧的大小始终为640x480。
我尝试使用
cap.set()
方法将分辨率更改为更小或更高的分辨率。我正在使用ImageSource相机,并且我知道相机支持我尝试使用的这些分辨率,我可以在其他程序中查看以这些分辨率录制的视频。我尝试使用不同的相机/网络摄像头。
我尝试在创建
VideoCapture
对象时显式更改后端API。例如:VideoCapture cap(0, CAP_DSHOW)
。我尝试过DSHOW
、FFMPEG
、IMAGES
等。我尝试在不同的计算机上运行相同的程序。
结果始终是相同的640x480分辨率。
是否有什么简单的问题我遗漏了?我在SO上找到的每篇文章都只是指向使用
cap.set()
方法更改宽度和高度。