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”,说明参数设置成功,否则失败。

如果设置失败怎么办???

测试软件链接:《点我下载》,密码8888

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

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

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值