当前位置: 首页 > article >正文

嵌入式硬件篇---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: 88x72
sensor.QCIF: 176x144
sensor.CIF: 352x288
sensor.QQSIF: 88x60
sensor.QSIF: 176x120
sensor.SIF: 352x240
sensor.QQQQVGA: 40x30
sensor.QQQVGA: 80x60
sensor.QQVGA: 160x120
sensor.QVGA: 320x240
sensor.VGA: 640x480
sensor.HQQQVGA: 80x40
sensor.HQQVGA: 160x80
sensor.HQVGA: 240x160
sensor.B64X32: 64x32 (用于帧差异 image.find_displacement())
sensor.B64X64: 64x64 用于帧差异 image.find_displacement())
sensor.B128X64: 128x64 (用于帧差异 image.find_displacement())
sensor.B128X128: 128x128 (用于帧差异 image.find_displacement())
sensor.LCD: 128x160 (用于LCD扩展板)
sensor.QQVGA2: 128x160 (用于LCD扩展板)
sensor.WVGA: 720x480 (用于 MT9V034)
sensor.WVGA2:752x480 (用于 MT9V034)
sensor.SVGA: 800x600 (仅用于 OV5640 感光元件)
sensor.XGA: 1024x768 (仅用于 OV5640 感光元件)
sensor.SXGA: 1280x1024 (仅用于 OV5640 感光元件)
sensor.UXGA: 1600x1200 (仅用于 OV5640 感光元件)
sensor.HD: 1280x720 (仅用于 OV5640 感光元件)
sensor.FHD: 1920x1080 (仅用于 OV5640 感光元件)
sensor.QHD: 2560x1440 (仅用于 OV5640 感光元件)
sensor.QXGA: 2048x1536 (仅用于 OV5640 感光元件)
sensor.WQXGA: 2560x1600 (仅用于 OV5640 感光元件)
sensor.WQXGA2: 2592x1944 (仅用于 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. 注意事项

性能影响

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

手动调优

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

硬件限制

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

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


总结

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


http://www.kler.cn/a/535333.html

相关文章:

  • Centos 8 离线升级openssh 9.9
  • Ubuntu部署Deepseek-R1模型(8b)
  • 【2024华为OD-E卷-100分-箱子之字形摆放】((题目+思路+JavaC++Python解析)
  • 一个RPC框架应该解决哪些问题?
  • esp32如何接入豆包
  • 4种架构的定义和关联
  • Unity VideoPlayer播放视屏不清晰的一种情况
  • 网络安全风险量化值 网络安全风险控制
  • C# OpenCV机器视觉:利用TrashNet实现垃圾分类
  • Google地图瓦片爬虫——进阶版
  • 计算机网络之物理层通信基础(电路交换、报文交换与分组交换)
  • go函数详解
  • ONLYOFFICE 文档 8.3 已发布:PDF 图章、合并形状、更多格式支持等
  • 【电商数据分析项目经验分享】数据采集——数据清洗——数据分析与可视化——数据决策”
  • Pixflow - CL-DJI Drone LUTs 120个大疆Drone无人机相机航拍电影级镜头LUT调色预设
  • DVWA靶场
  • AIGC个性化与定制化内容生成:技术与应用的前沿探索
  • 使用conda创建自己的python虚拟环境,与其他python版本独立区分
  • 将Deepseek接入pycharm 进行AI编程
  • 数据库并发策略
  • 【测试用例翔实 栈】P8815 [CSP-J 2022] 逻辑表达式
  • Tailwind CSS:现代化的实用优先CSS框架
  • HTML应用指南:利用GET请求获取全国盒马门店位置信息
  • The Sandbox 收购 QED,业务扩展至罗马尼亚
  • Ubuntu20.04 本地部署 DeepSeek-R1
  • Java中JSON和对象的相互转换