6483浏览
查看: 6483|回复: 11

[MP动手做] MicroPython动手做(41)——机器视觉之感光元件配置

[复制链接]
本帖最后由 驴友花雕 于 2020-7-12 19:07 编辑

MicroPython动手做(41)——机器视觉之感光元件配置图1

配套 OV2640摄像头:200W像素通用24P摄像头具有200万像素(1632x1232像素),其体积小、工作电压低,提供单片UXGA摄像和影像处理器的所有功能。通过SCCB总线控制,可以输出整帧、子采样、取窗口等方式的各种分辨率10位采样数据。该产品UXGA图像最高达到15帧/秒。用户可以完全控制图像质量、数据格式和传输方式。所有图像处理功能过程包括伽玛曲线、白平衡、饱和度、色度等都可以通过SCCB接口编程。OmmiVision图像传感器应用独有的传感器技术,通过减少或消除光学或电子缺陷如固定图案噪声、托尾、浮散等,提高图像质量,得到清晰的稳定的彩色图像。


MicroPython动手做(41)——机器视觉之感光元件配置图2

MicroPython动手做(41)——机器视觉之感光元件配置图3

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内部方块图

MicroPython动手做(41)——机器视觉之感光元件配置图4

MicroPython动手做(41)——机器视觉之感光元件配置图5

摄像头电原理图

MicroPython动手做(41)——机器视觉之感光元件配置图7

MicroPython动手做(41)——机器视觉之感光元件配置图6


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]

实验场景效果图

MicroPython动手做(41)——机器视觉之感光元件配置图9

MicroPython动手做(41)——机器视觉之感光元件配置图10

MixPY 实验图形编程

MicroPython动手做(41)——机器视觉之感光元件配置图8
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毫秒后超时。



gada888  版主

发表于 2020-7-19 09:02:02

屏不错
回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2020-7-19 19:28:30


谢谢版主
回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2020-7-20 14:40:13

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]
回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2020-7-20 14:44:32

MixPY 实验图形编程

MicroPython动手做(41)——机器视觉之感光元件配置图1
回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2020-7-20 15:23:03

实验场景效果
MicroPython动手做(41)——机器视觉之感光元件配置图1
回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2020-7-21 17:01:19

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类型的摄像头分辨率宽度

回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2020-7-23 13:44:26

(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

回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2020-7-23 14:03:47

(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

回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2020-7-23 14:10:40

(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类型的寄存器值

回复

使用道具 举报

DFS1w2cb8o8  中级技师

发表于 2020-8-1 21:20:21

厉害厉害
回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2020-8-3 08:08:39

谢谢鼓励,还在学习中
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4 备案 沪公网安备31011502402448

© 2013-2025 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail