其他分享
首页 > 其他分享> > OpenCV调用V4L相机记录

OpenCV调用V4L相机记录

作者:互联网

本文仅用于记录自己在使用opencv调用V4L过程中遇到的苦难。

确定OpenCV支持V4L

首先要确定OpenCV编译时支持了V4L,查看方法:

cout << getBuildInformatin() << endl;

输出opencv编译的信息,如下:

//可以发现V4L/V4L2这一项是OFF/ON。如果需要,重新编译OpenCV,将WITH_V4LWITH_LIBV4L设置为ON

设置曝光度等

VideoCapture cap(0 + CAP_V4L2);             // open v4l camera
if (cap.isOpened() == false){
    ROS_ERROR("Cannot open RGB camera.");
    return -1;
}
cap.set(CAP_PROP_AUTO_EXPOSURE, 0.25);      // set manul exposure
cap.set(CAP_PROP_EXPOSURE, -2);
cap.set(CAP_PROP_GAIN, 0.0);                // no gain

注意需要首先将CAP_PROP_AUTO_EXPOSURE设置为0.25,这个数表示手动曝光,否则用cap.get()函数获取曝光值时一直是inf。如果需要改回自动曝光,设置为0.75。至于为什么要设置成这两个数,一直没有查到。

下面就是CAP_PROP_EXPOSURE参数了,这个数值设置为多少呢?网上搜了下,这个数值是相机自身决定的,也就是opencv这边没有任何含义。我试了-1/-2…这种log的,不行。最后给0.0x这样一个小数可以改变曝光。但问题是从0到1增加过程中,曝光并不是线性增加的,而且也不知道这个数值的含义是什么。

贼烦。

只能是瞎改一个能用的,也搞不懂参数具体含义。

标签:CAP,cap,V4L,PROP,相机,OpenCV,曝光,EXPOSURE
来源: https://blog.csdn.net/tfb760/article/details/120355463