我正在使用Windows 10上的PS-Eye-3相机,libusb,PSEye 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
有什么主意吗?
答案 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。