sensor_auto_gain_control.py

# 本作品采用MIT许可证授权。
# 版权所有 (c) 2013-2023 OpenMV LLC。保留所有权利。
# https://github.com/openmv/openmv/blob/master/LICENSE
#
# 传感器自动增益控制
#
# 此示例展示了如何控制传感器的增益
# 使用自动增益控制算法。

# 增益控制和曝光控制有什么区别?
#
# 通过增加图像的曝光时间,您可以获得更多
# 相机上的光线。这为您提供了最佳的信噪比。
# 通常总是希望优先增加曝光时间...但是,当您
# 增加曝光时间时,最大可达帧率会降低,
# 而且若图像中有物体移动,曝光时间越长,
# 模糊就越明显。增益控制允许您通过模拟和数字乘法器
# 提高每个像素的输出...但它同时也会放大
# 噪声。因此,最好先让曝光尽可能增加,
# 然后再用增益控制来弥补剩余的差距。

# 我们可以通过为自动增益控制算法设置增益上限来实现上述目标。
# 设置之后,算法将不得不
# 通过增加曝光时间来满足增益需求,而不是使用增益
# 来实现。但代价是当光照变化时,曝光时间会
# 变化得更多,而不是曝光保持恒定、
# 增益发生变化。

import csi
import time

csi0 = csi.CSI()
csi0.reset()  # 重置并初始化传感器。
csi0.pixformat(csi.RGB565)  # 将像素格式设置为RGB565 (or GRAYSCALE)
csi0.framesize(csi.QVGA)  # 将帧大小设置为QVGA (320x240)

# OV7725传感器的增益db上限约为24 db。
csi0.auto_gain(True, gain_db_ceiling=16.0)  # 默认增益。

# 注意!如果将增益上限设置得太低而不调整曝光控制
# 目标值,那么开启曝光控制时
# 会产生大量振荡。

csi0.snapshot(time=2000)  # 等待设置生效。
clock = time.clock()  # 创建一个时钟对象来跟踪FPS。

while True:
    clock.tick()  # 更新FPS时钟。
    img = csi0.snapshot()  # 拍照并返回图像。
    print(
        "FPS %f, Gain %f dB, Exposure %d us"
        % (clock.fps(), csi0.gain_db(), csi0.exposure_us())
    )

results matching ""

    No results matching ""