驴友花雕 发表于 2020-7-9 17:33:02

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摄像头


#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())

实验场景效果图





MixPY 实验图形编程


2、sensor_感光元件函数

sensor用于摄像头配置及图像抓取等

(1)初始化摄像头
sensor.reset()
初始化摄像头,会自动扫描并获取摄像头地址及型号

参数:


返回:
None

(2)设置帧格式
sensor.set_pixformat(format)
设置摄像头输出格式

参数:
format: 输出帧格式
: 8-bits per pixel 灰度图格式(每像素为8位、1字节)
: 16-bits per pixel 彩色图格式(每像素为16位、2字节。5位红色,6位绿色,5位蓝色)


返回:
True: 设置成功
False: 设置错误



(3)设置帧大小
sensor.set_framesize(framesize)
设置摄像头输出帧大小

参数:
framesize: 帧大小
sensor.QQQQVGA: 40x30
sensor.QQQVGA: 80x60
sensor.QQVGA: 160x120
sensor.QVGA: 320x240(LCD屏为320*240分辨率,推荐设置为QVGA格式)
sensor.VGA: 640x480

返回:
True: 设置成功
False: 设置错误

(4)启动函数
sensor.run(enable)
启动/停止芯片捕获图像(可以不使用)

参数:
enable: 1表示开启,0 表示停止

返回:
True: 即返回1

(5)设置跳帧
sensor.skip_frames()
跳过指定帧数或者跳过指定时间内的图像

参数:
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

gada888 发表于 2020-7-19 09:02
屏不错

{:6_202:} 谢谢版主

驴友花雕 发表于 2020-7-20 14:40:13

3、简单摄像机



#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())

驴友花雕 发表于 2020-7-20 14:44:32

MixPY 实验图形编程


驴友花雕 发表于 2020-7-20 15:23:03

实验场景效果

驴友花雕 发表于 2020-7-21 17:01:19

4、sensor_感光元件函数(续)

sensor用于摄像头配置及图像抓取等

(6)获取图像
sensor.snapshot()
控制摄像头捕捉图像

参数:


返回:
image类型的对象

(7)关闭摄像头
sensor.shutdown(enable)
启动/关闭摄像头

参数:
enable: 1 开启摄像头0 关闭摄像头

返回:
None

(8)获取分辨率宽度
sensor.width()
获取摄像头分辨率宽度

参数:


返回:
int类型的摄像头分辨率宽度

驴友花雕 发表于 2020-7-23 13:44:26

(9)获取分辨率高度
sensor.height()
获取摄像头分辨率高度

参数:


返回:
int类型的摄像头分辨率高度

(10)获取帧缓冲
sensor.get_fb()
获取当前摄像头帧缓冲区图像

参数:


返回:
image类型的对象

(11)获取ID
sensor.get_id()
获取当前摄像头ID

参数:


返回:
int类型的ID

(12)设置彩条模式
sensor.set_colorbar(enable)
将摄像头设置为彩条模式

参数:
enable: 1 表示开启彩条模式 0 表示关闭彩条模式

返回:
None

驴友花雕 发表于 2020-7-23 14:03:47

(13)设置对比度
sensor.set_contrast(contrast)
设置摄像头对比度

参数:
constrast: 摄像头对比度,范围为[-2,+2]

返回:
True: 设置成功
False: 设置错误

(14)设置亮度
sensor.set_brightness(brightness)
设置摄像头亮度

参数:
brightness: 摄像头亮度,范围为[-2,+2]

返回:
True: 设置成功
False: 设置错误

(15)设置饱和度
sensor.set_saturation(saturation)
设置摄像头饱和度

参数:
saturation: 摄像头饱和度,范围为[-2,+2]

返回:
True: 设置成功
False: 设置错误

(16)设置自动增益
sensor.set_auto_gain(enable,gain_db)
设置摄像自动增益模式

参数:
enable: 1 表示开启自动增益 0 表示关闭自动增益
gain_db: 关闭自动增益时,设置的摄像头固定增益值,单位为db

返回:
None

驴友花雕 发表于 2020-7-23 14:10:40

(17)获取增益值
sensor.get_gain_db()
获取摄像头增益值

参数:


返回:
float类型的增益值

(18)设置水平镜像
sensor.set_hmirror(enable)
设置摄像头水平镜像

参数:
enable: 1 表示开启水平镜像 0 表示关闭水平镜像

返回:
None

(19)写入寄存器
sensor.__write_reg(address, value)
往摄像头寄存器写入指定值

参数:
address: 寄存器地址
value: 写入值

返回:
None

(20)读取寄存器
sensor.__read_reg(address)
读取摄像头寄存器值

参数:
address: 寄存器地址

返回:
int类型的寄存器值

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

厉害厉害{:6_215:}

驴友花雕 发表于 2020-8-3 08:08:39

谢谢鼓励,还在学习中
页: [1]
查看完整版本: MicroPython动手做(41)——机器视觉之感光元件配置