OpenCV调用V4L相机记录
作者:互联网
本文仅用于记录自己在使用opencv调用V4L过程中遇到的苦难。
确定OpenCV支持V4L
首先要确定OpenCV编译时支持了V4L,查看方法:
cout << getBuildInformatin() << endl;
输出opencv编译的信息,如下:
可以发现V4L/V4L2这一项是OFF/ON。如果需要,重新编译OpenCV,将WITH_V4L
和WITH_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