嵌入式硬件系列:OpenMV基础使用指南


文章目录

  • 前言
  • 第一部分:基本使用
  • 摄像头初始化
  • 设置彩色/黑白图像
  • 设置图像大小
  • 跳过一些帧
  • 获取一张图像
  • 第二部分:自动增益/白平衡/曝光
  • 1. 自动增益(Auto Gain)
  • 作用
  • 相关函数
  • 使用场景
  • 2. 自动曝光(Auto Exposure)
  • 作用
  • 相关函数
  • 使用场景
  • 3. 自动白平衡(Auto White Balance)
  • 作用
  • 相关函数
  • 使用场景
  • 4. 综合使用
  • 5. 注意事项
  • 性能影响
  • 手动调优
  • 硬件限制
  • 总结

  • 前言

    本文简单介绍了基本使用以及自动增益\自动曝光\自动白平衡。


    第一部分:基本使用

    import sensor#引入感光元件的模块
    
    #设置摄像头参数
    sensor.reset()#1.初始化感光元件
    sensor.set_pixformat(sensor.RGB565)#2.设置采集图像为彩色
    sensor.set_framesize(sensor.QVGA)#设置采集图像的大小
    sensor.skip_frames()#跳过n张照片,在更改设置后,跳过一些帧,等待感光元件变稳定。
    
    #一直拍照
    while(True):
        img = sensor.snapshot()#拍摄一张照片,img为一个image对象
    

    摄像头初始化

    sensor.reset() 初始化感光元件
    

    设置彩色/黑白图像

    sensor.set_pixformat() 设置像素模式。
    

    参数:
    sensor.GRAYSCALE: 灰度,每个像素8bit。
    sensor.RGB565: 彩色,每个像素16bit。

    设置图像大小

    sensor.set_framesize() 设置图像的大小
    

    参数:
    sensor.QQCIF: 88×72
    sensor.QCIF: 176×144
    sensor.CIF: 352×288
    sensor.QQSIF: 88×60
    sensor.QSIF: 176×120
    sensor.SIF: 352×240
    sensor.QQQQVGA: 40×30
    sensor.QQQVGA: 80×60
    sensor.QQVGA: 160×120
    sensor.QVGA: 320×240
    sensor.VGA: 640×480
    sensor.HQQQVGA: 80×40
    sensor.HQQVGA: 160×80
    sensor.HQVGA: 240×160
    sensor.B64X32: 64×32 (用于帧差异 image.find_displacement())
    sensor.B64X64: 64×64 用于帧差异 image.find_displacement())
    sensor.B128X64: 128×64 (用于帧差异 image.find_displacement())
    sensor.B128X128: 128×128 (用于帧差异 image.find_displacement())
    sensor.LCD: 128×160 (用于LCD扩展板)
    sensor.QQVGA2: 128×160 (用于LCD扩展板)
    sensor.WVGA: 720×480 (用于 MT9V034)
    sensor.WVGA2:752×480 (用于 MT9V034)
    sensor.SVGA: 800×600 (仅用于 OV5640 感光元件)
    sensor.XGA: 1024×768 (仅用于 OV5640 感光元件)
    sensor.SXGA: 1280×1024 (仅用于 OV5640 感光元件)
    sensor.UXGA: 1600×1200 (仅用于 OV5640 感光元件)
    sensor.HD: 1280×720 (仅用于 OV5640 感光元件)
    sensor.FHD: 1920×1080 (仅用于 OV5640 感光元件)
    sensor.QHD: 2560×1440 (仅用于 OV5640 感光元件)
    sensor.QXGA: 2048×1536 (仅用于 OV5640 感光元件)
    sensor.WQXGA: 2560×1600 (仅用于 OV5640 感光元件)
    sensor.WQXGA2: 2592×1944 (仅用于 OV5640 感光元件)

    跳过一些帧

    sensor.skip_frames(n=10) 跳过n张照片,在更改设置后,跳过一些帧,等待感光元件变稳定。
    

    获取一张图像

    sensor.snapshot() 拍摄一张照片,返回一个image对象。
    

    第二部分:自动增益/白平衡/曝光

    sensor.set_auto_gain() 自动增益开启(True)或者关闭(False)。
    

    在使用颜色追踪时,需要关闭自动增益。

    sensor.set_auto_whitebal() 自动白平衡开启(True)或者关闭(False)。
    

    在使用颜色追踪时,需要关闭自动白平衡。

    sensor.set_auto_exposure(enable[\, exposure_us])
    

    enable 打开(True)或关闭(False)自动曝光。默认打开。
    如果 enable 为False, 则可以用 exposure_us 设置一个固定的曝光时间(以微秒为单位)。

    1. 自动增益(Auto Gain)

    作用

    自动增益控制(AGC)用于调整图像的亮度。当环境光线较暗时,增益值会增加以放大信号,使图像变亮;当环境光线较亮时,增益值会降低以避免过曝。

    相关函数

    sensor.set_auto_gain(enable)
    启用或禁用自动增益控制。
    
    enable=True:启用自动增益(默认)。
    
    enable=False:禁用自动增益,手动设置增益值。
    
    sensor.get_gain_db()
    获取当前增益值(单位:分贝,dB)。
    
    sensor.set_auto_gain(False) + sensor.set_gain(value)
    禁用自动增益后,手动设置增益值(value为增益值,范围取决于摄像头型号)。
    

    使用场景

    在光线变化较大的环境中,启用自动增益可以动态调整图像亮度

    如果需要固定增益值(如避免噪声干扰),可以禁用自动增益并手动设置。

    示例代码
    import sensor
    
    #初始化摄像头
    sensor.reset()
    sensor.set_pixformat(sensor.RGB565)
    sensor.set_framesize(sensor.QVGA)
    
    #启用自动增益
    sensor.set_auto_gain(True)
    
    #获取当前增益值
    print("Current Gain:", sensor.get_gain_db())
    
    #禁用自动增益并手动设置增益值
    sensor.set_auto_gain(False)
    sensor.set_gain(10)  # 设置增益值为10dB
    

    2. 自动曝光(Auto Exposure)

    作用

    自动曝光控制(AEC)用于调整图像的曝光时间,以确保图像在不同光照条件下都能获得合适的亮度。曝光时间越长,图像越亮,但可能导致运动模糊;曝光时间越短,图像越暗,但能捕捉快速运动

    相关函数

    sensor.set_auto_exposure(enable)
    启用或禁用自动曝光控制。
    
    enable=True:启用自动曝光(默认)。
    
    enable=False:禁用自动曝光,手动设置曝光时间。
    
    sensor.get_exposure_us()
    获取当前曝光时间(单位:微秒,µs)。
    
    sensor.set_auto_exposure(False) + sensor.set_exposure_us(value)
    禁用自动曝光后,手动设置曝光时间(value为曝光时间,范围取决于摄像头型号)。
    

    使用场景

    光线变化较大的环境中,启用自动曝光可以动态调整图像亮度

    如果需要固定曝光时间(如避免运动模糊),可以禁用自动曝光并手动设置。

    示例代码
    import sensor
    
    #初始化摄像头
    sensor.reset()
    sensor.set_pixformat(sensor.RGB565)
    sensor.set_framesize(sensor.QVGA)
    
    #启用自动曝光
    sensor.set_auto_exposure(True)
    
    #获取当前曝光时间
    print("Current Exposure:", sensor.get_exposure_us())
    
    #禁用自动曝光并手动设置曝光时间
    sensor.set_auto_exposure(False)
    sensor.set_exposure_us(10000)  # 设置曝光时间为10000µs
    

    3. 自动白平衡(Auto White Balance)

    作用

    自动白平衡(AWB)用于调整图像的色彩平衡,以确保在不同光源下(如日光、白炽灯、荧光灯)图像的色彩表现准确。白平衡通过调整红、绿、蓝三个通道的增益来校正色彩。

    相关函数

    sensor.set_auto_whitebal(enable)
    启用或禁用自动白平衡。
    
    enable=True:启用自动白平衡(默认)。
    
    enable=False:禁用自动白平衡,手动设置白平衡增益。
    
    sensor.get_rgb_gain_db()
    获取当前红、绿、蓝三个通道的增益值(单位:分贝,dB)。
    
    sensor.set_auto_whitebal(False) + sensor.set_rgb_gain(r_gain, g_gain, b_gain)
    禁用自动白平衡后,手动设置红、绿、蓝三个通道的增益值。
    

    使用场景

    光源颜色变化较大的环境中,启用自动白平衡可以动态调整色彩平衡。
    如果需要固定色彩表现(如避免色偏),可以禁用自动白平衡并手动设置。

    示例代码

    import sensor
    
    #初始化摄像头
    sensor.reset()
    sensor.set_pixformat(sensor.RGB565)
    sensor.set_framesize(sensor.QVGA)
    
    #启用自动白平衡
    sensor.set_auto_whitebal(True)
    
    #获取当前白平衡增益值
    print("Current RGB Gain:", sensor.get_rgb_gain_db())
    
    #禁用自动白平衡并手动设置增益值
    sensor.set_auto_whitebal(False)
    sensor.set_rgb_gain(2.0, 1.5, 1.8)  # 设置红、绿、蓝增益值
    

    4. 综合使用

    在实际应用中,自动增益、自动曝光和自动白平衡通常需要结合使用,以确保图像质量。以下是一个综合示例:

    import sensor
    
    #初始化摄像头
    sensor.reset()
    sensor.set_pixformat(sensor.RGB565)
    sensor.set_framesize(sensor.QVGA)
    
    #启用自动增益、自动曝光、自动白平衡
    sensor.set_auto_gain(True)
    sensor.set_auto_exposure(True)
    sensor.set_auto_whitebal(True)
    
    #捕获图像并显示
    while True:
        img = sensor.snapshot()
        print("Gain:", sensor.get_gain_db(), "Exposure:", sensor.get_exposure_us(), "RGB Gain:", sensor.get_rgb_gain_db())
    

    5. 注意事项

    性能影响

    性能影响:自动增益、自动曝光和自动白平衡会增加计算开销,可能降低帧率

    手动调优

    手动调优:在特定场景下(如固定光源环境),手动设置增益、曝光和白平衡可以获得更好的效果。

    硬件限制

    硬件限制:不同摄像头模块的增益、曝光和白平衡范围可能不同,需参考具体型号的文档。

    通过合理使用这些功能,可以在不同环境下获得高质量的图像,为后续的图像处理任务(如目标检测、颜色识别)奠定基础。


    总结

    以上就是今天要讲的内容,本文仅仅简单介绍了基本使用以及自动增益\自动曝光\自动白平衡。

    作者:Ronin-Lotus

    物联沃分享整理
    物联沃-IOTWORD物联网 » 嵌入式硬件系列:OpenMV基础使用指南

    发表回复