3

我正在使用 OpenCV 2.4.6 通过我的旧 Logitech QuickCam Pro 3000 网络摄像头抓取图像。使用VideoCapture::set( CV_CAP_PROP_FRAME_WIDTH, ... )我无法设置宽度的值(高度的同上)。set(...)总是返回false

正常吗?

PS我在Linux(kubuntu)上,它似乎使用V4L。

4

1 回答 1

2

您的相机似乎没有正确初始化。以下代码适用于我。

using namespace cv;

[...]

VideoCapture capture(0);
capture.set(CV_CAP_PROP_FRAME_WIDTH, width);
capture.set(CV_CAP_PROP_FRAME_HEIGHT, height);

我尝试了一下,发现了以下问题:

  1. capture.setcapture如果未初始化,则返回 0 。
  2. capture.set如果相机忙(另一个使用它的进程),则返回 0。

不能保证调用VideoCapture::set会将相机分辨率更改为您想要的分辨率。例如,对于我的 Logitech HD Pro Webcam C290,将分辨率设置为 640x480 和 1920x1080 即可。但是当我尝试 1024x768 时,VideoCapture::set返回 true,但实际分辨率设置为 960x720。因此,在读取一帧后检查实际分辨率。

于 2013-11-20T07:08:50.013 回答