文章目录
前言
以上就是今天要讲的内容,本文简单介绍了基本使用以及自动增益\自动曝光\自动白平衡。
第一部分:基本使用
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. 注意事项
性能影响
性能影响:自动增益、自动曝光和自动白平衡会增加计算开销,可能降低帧率。
手动调优
手动调优:在特定场景下(如固定光源环境),手动设置增益、曝光和白平衡可以获得更好的效果。
硬件限制
硬件限制:不同摄像头模块的增益、曝光和白平衡范围可能不同,需参考具体型号的文档。
通过合理使用这些功能,可以在不同环境下获得高质量的图像,为后续的图像处理任务(如目标检测、颜色识别)奠定基础。
总结
以上就是今天要讲的内容,本文仅仅简单介绍了基本使用以及自动增益\自动曝光\自动白平衡。