我正在使用 OpenCV 2.4.6 通过我的旧 Logitech QuickCam Pro 3000 网络摄像头抓取图像。使用VideoCapture::set( CV_CAP_PROP_FRAME_WIDTH, ... )
我无法设置宽度的值(高度的同上)。set(...)
总是返回false
。
正常吗?
PS我在Linux(kubuntu)上,它似乎使用V4L。
您的相机似乎没有正确初始化。以下代码适用于我。
using namespace cv;
[...]
VideoCapture capture(0);
capture.set(CV_CAP_PROP_FRAME_WIDTH, width);
capture.set(CV_CAP_PROP_FRAME_HEIGHT, height);
我尝试了一下,发现了以下问题:
capture.set
capture
如果未初始化,则返回 0 。capture.set
如果相机忙(另一个使用它的进程),则返回 0。不能保证调用VideoCapture::set
会将相机分辨率更改为您想要的分辨率。例如,对于我的 Logitech HD Pro Webcam C290,将分辨率设置为 640x480 和 1920x1080 即可。但是当我尝试 1024x768 时,VideoCapture::set
返回 true,但实际分辨率设置为 960x720。因此,在读取一帧后检查实际分辨率。