我使用OpenCV 2.4.6使用旧的Logitech QuickCam Pro 3000网络摄像头抓取图像。使用VideoCapture::set( CV_CAP_PROP_FRAME_WIDTH, ... )
我无法设置宽度值(高度的标识符)。 set(...)
始终返回false
。
这是正常的吗?
P.S。我在Linux( kubuntu )上似乎使用了V4L。
答案 0 :(得分:1)
您的相机似乎未正确初始化。以下代码适用于我。
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网络摄像头C290,将分辨率设置为640x480和1920x1080。但是当我尝试1024x768时,VideoCapture::set
返回true,但实际分辨率设置为960x720。因此,请在阅读完框架后检查实际分辨率。