我们在初学使用opencv调用摄像头时,经常没有好好注意设置参数的问题。
像我,一般来说只用过设置分辨率的方法;但是今天在进行颜色检测时发生的一些情况,让我对设置摄像头参数重视起来。
需要注意的是,对于摄像头进行设置之后,程序结束不会恢复到默认状态(如果没有在程序结束时写明“开启自动白平衡”等)。
白平衡
可以看出,色调偏红,并且是逐渐变红的。
这是因为当一个很绿绿得发光的物体出现在图像中,自动白平衡尝试通过调整图像的色温和色调来消除色偏,导致图像变得偏红色了。
固定白平衡
cap.set(CAP_PROP_AUTO_WB, 0);
cap.set(CAP_PROP_WB_TEMPERATURE, 6500);
看到图像有些偏绿,但这只是因为我的参数没有设好;但观察其自动调整曝光等其他未固定参数的过程,可以看出色温色调确实没有发生变化。
饱和度
调整饱和度。 在进行颜色识别任务时,调整饱和度或许可以起到作用,但这不是绝对的,过高的饱和度也有可能使得不同的颜色难以区分。
cap.set(CAP_PROP_SATURATION, 100);
其他参数的修改(部分)
//设置对比度
cap.set(CAP_PROP_CONTRAST, 100);
//设置亮度
cap.set(CAP_PROP_BRIGHTNESS, 100);
//设置曝光
cap.set(CAP_PROP_AUTO_EXPOSURE, 0.25);
cap.set(CAP_PROP_EXPOSURE, 0.25);
一般来说摄像头的自动调整是很有效的,如果不是有特殊的要求,并不建议指定摄像头参数。