opencv 摄像头偏色问题 自动变亮问题 解决办法

相信很多人使用摄像头的时候发现图片有严重偏色,比如蓝的突然变粉红,黄,白的也变黄等等之类的问题:

如下来自百度百科:
白平衡,字面上的理解是白色的平衡。白平衡是描述显示器中红、绿、蓝三基色混合生成后白色精确度的一项指标。白平衡是电视摄像领域一个非常重要的概念,通过它可以解决色彩还原色调处理的一系列问题。白平衡是随着电子影像再现色彩真实而产生的,在专业摄像领域白平衡应用的较早。家用电子产品(家用摄像机、数码照相机)中也广泛地使用,然而技术的发展使得白平衡调整变得越来越简单容易,但许多使用者还不甚了解白平衡的工作原理,理解上存在诸多误区。它是实现摄像机图像能精确反映被摄物的色彩状况,有手动白平衡和自动白平衡等方式。许多人在使用数码摄像机拍摄的时候都会遇到这样的问题:在日光灯的房间里拍摄的影像会显得发绿,在室内钨丝灯光下拍摄出来的景物就会偏黄,而在日光阴影处拍摄到的照片则莫名其妙地偏蓝,其原因就在于白平衡的设置上

通过百度百科发现,原来我们的偏色问题原由是设置了自动白平衡,所以关闭就好

通过摄像头属性的研究,最终锁定在了自动曝光问题上:

如下来自百度百科:
自动曝光是相机根据光线的强弱自动调整曝光量,防止曝光过度或者不足,但是,在场景反差很大的时候会出现误差(比如舞台的场景),光圈优先和快门优先都是自动曝光的范畴,除非很高档的相机,这两种功能不会同时出现在一个相机上,在自动曝光的同时也让你有部分选择的权利,当使用光圈优先的功能时,特别是小光圈时,要注意此时的快门速度会相应的调得很低,端稳相机防止图像不清晰

所以,问题原因已经找到了:

偏色原因—>自动白平衡

自动变亮(暗)—>自动曝光

那么我们如何通过opencv来进行解决这个问题呢?

我们可以通过设置opencv 的 videocapture 里面的 set函数来修改摄像头属性

自动白平衡参数是 CAP_PROP_AUTO_WB 0为关闭自动

自动曝光参数是 CAP_PROP_AUTO_EXPOSURE 0.25为关闭自动,如果0.25不行就用1

所以修改这两个就可以了

以下是我用python写的程序,各位亲们如果用C可以参考一下

导入库
import cv2

#打开摄像头
cap = cv2.VideoCapture(0)

#:摄像头参数设置
#这个是设置摄像头的获取的图片大小,越小 程序从摄像头获取图片的延迟越小(但是越小二维码就越难识别到,自己看着办)
print(cap.set(cv2.CAP_PROP_FRAME_WIDTH , 400))   #设置宽度
print(cap.set(cv2.CAP_PROP_FRAME_HEIGHT, 400))  #设置长度
#关闭白平衡,解决偏色问题
print(cap.set(cv2.CAP_PROP_AUTO_WB,0))
#设置曝光为手动模式
print(cap.set(cv2.CAP_PROP_AUTO_EXPOSURE,1))
#设置曝光的值为0
print(cap.set(cv2.CAP_PROP_EXPOSURE,100))

循环读取图片
while True:
    # 读取图片
    _,frame = cap.read()
    # 显示图片
    cv2.imshow("img",frame)
    # 等待按键
    key = cv2.waitKey(20)
    # 按下ESC键
    if(key == 27):
        break

上面有5个打印输出,后面三个如果都显示”True”,说明参数设置成功,否则失败。

这个测试软件可以查看是否可以进行设置,如果发现白平衡和曝光的自动按钮是灰色的,说明不能调节,否则是可以通过代码进行设置的。

如果自动的按钮是灰色的,换一款可以条件的摄像头吧。别白费力气了,如果是灰色的,是无论如何都不能设置的!!!

Original: https://blog.csdn.net/weixin_50518868/article/details/120057106
Author: 我就是菜
Title: opencv 摄像头偏色问题 自动变亮问题 解决办法

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/700998/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球