如何使用OpenCV 3.4.2将相机设置为自动曝光?

时间:2018-11-29 19:07:45

标签: c++ opencv camera exposure

我正在使用Windows 10上的PS-Eye-3相机,libusbPSEye driver,OpenCV 3.4.2和Visual Studio 2015 / C ++。

我可以使用以下代码将相机的曝光设置为任何值:

cv::VideoCapture *cap;  
...
cap = new cv::VideoCapture(0);
cap->set(CV_CAP_PROP_EXPOSURE, exposure); // exposure = [0, 255]

现在,我也想切换到自动曝光。如何将相机设置为自动曝光模式?

我尝试了以下操作:

cap->set(CV_CAP_PROP_EXPOSURE, 0);       // not working
cap->set(CV_CAP_PROP_EXPOSURE, -1);      // not working
cap->set(CV_CAP_PROP_AUTO_EXPOSURE, 1);  // not working, exposure stays fixed
cap->set(CV_CAP_PROP_AUTO_EXPOSURE, 0);  // not working, exposure stays fixed
cap->set(CV_CAP_PROP_AUTO_EXPOSURE, -1); // not working, exposure stays fixed

有什么主意吗?

2 个答案:

答案 0 :(得分:0)

尝试设置->设置(CV_CAP_PROP_AUTO_EXPOSURE,X); 其中X是取决于相机的值,例如0.25或0.75。 对于类似的问题,请参见讨论: https://github.com/opencv/opencv/issues/9738

答案 1 :(得分:0)

这取决于您使用的捕获 api。如果您使用的是 CAP_V4L2,则自动曝光设置为“开”,值为 3,“关”,值为 1。

通过在终端中输入 v4l2-ctl -l 可以找到所有可设置的值。

我认为对于 OpenCV < 4.0,默认 api 是 CAP_GSTREAMER,自动曝光设置为“on”,值为 0.75,“off”为 0.25。