6483| 11
|
[MP动手做] MicroPython动手做(41)——机器视觉之感光元件配置 |
本帖最后由 驴友花雕 于 2020-7-12 19:07 编辑 配套 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毫秒后超时。 |
3、简单摄像机 [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] |
4、sensor_感光元件函数(续) 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类型的摄像头分辨率宽度 |
(9)获取分辨率高度 [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 |
(13)设置对比度 [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 |
(17)获取增益值 [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类型的寄存器值 |
© 2013-2025 Comsenz Inc. Powered by Discuz! X3.4 Licensed