MicroPython动手做(41)——机器视觉之感光元件配置
2020-07-091.3万
AI 快速预览详细
本文介绍了如何使用MicroPython对OV2640摄像头进行感光元件配置。首先,通过sensor.reset()初始化摄像头,然后使用sensor.set_pixformat()和sensor.set_framesize()设置帧格式和大小。文章还提供了详细的代码示例和实验场景效果图,帮助零基础的新手用户快速上手。
![]() 配套 OV2640摄像头:200W像素通用24P摄像头具有200万像素(1632x1232像素),其体积小、工作电压低,提供单片UXGA摄像和影像处理器的所有功能。通过SCCB总线控制,可以输出整帧、子采样、取窗口等方式的各种分辨率10位采样数据。该产品UXGA图像最高达到15帧/秒。用户可以完全控制图像质量、数据格式和传输方式。所有图像处理功能过程包括伽玛曲线、白平衡、饱和度、色度等都可以通过SCCB接口编程。OmmiVision图像传感器应用独有的传感器技术,通过减少或消除光学或电子缺陷如固定图案噪声、托尾、浮散等,提高图像质量,得到清晰的稳定的彩色图像。 ![]() ![]() OV2640主要参数 可以支持定制FPC长度,镜头角度(70-160度)可以支持定制FPC长度,镜头角度(70-160度) 感光阵列1632x1232 最大格式UXGA IO电压1.7V-3.3V 模拟电压2.5-3.0v(内部LDO给核供电1.2V) 功耗工作TBD 休眠<20μA 温度操作-30℃到70℃ 稳定工作0℃到50℃ 输出格式(8位)YUV/YCbCr4:2:2 RGB565/555/444 GRB4:2:2 Raw RGB Data 光学尺寸1/4" 视场角70度 最大贞率15fps SXGA 灵敏度1.3V/(Lux-sec) 信噪比40 dB 动态范围50 dB 浏览模式逐行 电子曝光1行到1247行 像素面积2.2μm x 2.2μm 暗电流15mV/s at 60℃ 工作电流40mA OV2640内部方块图 ![]() ![]() 摄像头电原理图 ![]() ![]() 1、测试配套的OV2640摄像头 [mw_shl_code=python,false]#MicroPython动手做(41)——机器视觉之感光元件配置 #测试配套的OV2640摄像头 import sensor import mixno import lcd lcd.init(freq=15000000,color=0) sensor.reset() sensor.set_pixformat(sensor.RGB565) sensor.set_framesize(sensor.QVGA) sensor.run(1) sensor.skip_frames(10) lcd.display(sensor.snapshot())[/mw_shl_code] 实验场景效果图 ![]() ![]() MixPY 实验图形编程 ![]() 2、sensor_感光元件函数 sensor用于摄像头配置及图像抓取等 (1)初始化摄像头 [mw_shl_code=python,false]sensor.reset()[/mw_shl_code] 初始化摄像头,会自动扫描并获取摄像头地址及型号 参数: 无 返回: None (2)设置帧格式 [mw_shl_code=python,false]sensor.set_pixformat(format)[/mw_shl_code] 设置摄像头输出格式 参数: format: 输出帧格式 [sensor.GRAYSCALE]: 8-bits per pixel 灰度图格式(每像素为8位、1字节) [sensor.RGB565]: 16-bits per pixel 彩色图格式(每像素为16位、2字节。5位红色,6位绿色,5位蓝色) 返回: True: 设置成功 False: 设置错误 (3)设置帧大小 [mw_shl_code=python,false]sensor.set_framesize(framesize)[/mw_shl_code] 设置摄像头输出帧大小 参数: framesize: 帧大小 sensor.QQQQVGA: 40x30 sensor.QQQVGA: 80x60 sensor.QQVGA: 160x120 sensor.QVGA: 320x240(LCD屏为320*240分辨率,推荐设置为QVGA格式) sensor.VGA: 640x480 返回: True: 设置成功 False: 设置错误 (4)启动函数 [mw_shl_code=python,false]sensor.run(enable)[/mw_shl_code] 启动/停止芯片捕获图像(可以不使用) 参数: enable: 1表示开启,0 表示停止 返回: True: 即返回1 (5)设置跳帧 [mw_shl_code=python,false]sensor.skip_frames([n,time])[/mw_shl_code] 跳过指定帧数或者跳过指定时间内的图像 参数: n: 跳过 n 帧图像 time: 跳过指定时间,单位为ms 返回: None 使用此函数为让相机图像在改变相机设置后稳定下来,应在改变相机设置后调用该函数 使用n个快照,n作为普通参数传输, 例如:skip_frames(10)跳过10帧 或使用参数time来跳过几毫秒的帧数,例如:kip_frames(time = 2000),跳过2000毫秒的帧。 若n和time 皆未指定,该方法跳过300毫秒的帧。 若二者皆指定,该方法会跳过n数量的帧,但将在time毫秒后超时。 |















[mw_shl_code=python,false]sensor.get_gain_db()[/mw_shl_code]
获取摄像头增益值
参数:
无
返回:
float类型的增益值
(18)设置水平镜像
[mw_shl_code=python,false]sensor.set_hmirror(enable)[/mw_shl_code]
设置摄像头水平镜像
参数:
enable: 1 表示开启水平镜像 0 表示关闭水平镜像
返回:
None
(19)写入寄存器
[mw_shl_code=python,false]sensor.__write_reg(address, value)[/mw_shl_code]
往摄像头寄存器写入指定值
参数:
address: 寄存器地址
value: 写入值
返回:
None
(20)读取寄存器
[mw_shl_code=python,false]sensor.__read_reg(address)[/mw_shl_code]
读取摄像头寄存器值
参数:
address: 寄存器地址
返回:
int类型的寄存器值
[mw_shl_code=python,false]sensor.set_contrast(contrast)[/mw_shl_code]
设置摄像头对比度
参数:
constrast: 摄像头对比度,范围为[-2,+2]
返回:
True: 设置成功
False: 设置错误
(14)设置亮度
[mw_shl_code=python,false]sensor.set_brightness(brightness)[/mw_shl_code]
设置摄像头亮度
参数:
brightness: 摄像头亮度,范围为[-2,+2]
返回:
True: 设置成功
False: 设置错误
(15)设置饱和度
[mw_shl_code=python,false]sensor.set_saturation(saturation)[/mw_shl_code]
设置摄像头饱和度
参数:
saturation: 摄像头饱和度,范围为[-2,+2]
返回:
True: 设置成功
False: 设置错误
(16)设置自动增益
[mw_shl_code=python,false]sensor.set_auto_gain(enable,gain_db)[/mw_shl_code]
设置摄像自动增益模式
参数:
enable: 1 表示开启自动增益 0 表示关闭自动增益
gain_db: 关闭自动增益时,设置的摄像头固定增益值,单位为db
返回:
None
[mw_shl_code=python,false]sensor.height()[/mw_shl_code]
获取摄像头分辨率高度
参数:
无
返回:
int类型的摄像头分辨率高度
(10)获取帧缓冲
[mw_shl_code=python,false]sensor.get_fb()[/mw_shl_code]
获取当前摄像头帧缓冲区图像
参数:
无
返回:
image类型的对象
(11)获取ID
[mw_shl_code=python,false]sensor.get_id()[/mw_shl_code]
获取当前摄像头ID
参数:
无
返回:
int类型的ID
(12)设置彩条模式
[mw_shl_code=python,false]sensor.set_colorbar(enable)[/mw_shl_code]
将摄像头设置为彩条模式
参数:
enable: 1 表示开启彩条模式 0 表示关闭彩条模式
返回:
None
sensor用于摄像头配置及图像抓取等
(6)获取图像
[mw_shl_code=python,false]sensor.snapshot()[/mw_shl_code]
控制摄像头捕捉图像
参数:
无
返回:
image类型的对象
(7)关闭摄像头
[mw_shl_code=python,false]sensor.shutdown(enable)[/mw_shl_code]
启动/关闭摄像头
参数:
enable: 1 开启摄像头 0 关闭摄像头
返回:
None
(8)获取分辨率宽度
[mw_shl_code=python,false]sensor.width()[/mw_shl_code]
获取摄像头分辨率宽度
参数:
无
返回:
int类型的摄像头分辨率宽度
[mw_shl_code=python,false]#MicroPython动手做(41)——机器视觉之感光元件配置
#简单摄像机
import sensor
import mixno
import lcd
sensor.reset()
sensor.set_pixformat(sensor.RGB565)
sensor.set_framesize(sensor.QVGA)
sensor.run(1)
sensor.skip_frames(10)
sensor.set_vflip(1)
lcd.init(freq=15000000,color=0x0000)
while True:
lcd.display(sensor.snapshot())[/mw_shl_code]