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
屏不错
{:6_202:} 谢谢版主 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())
MixPY 实验图形编程
实验场景效果
4、sensor_感光元件函数(续)
sensor用于摄像头配置及图像抓取等
(6)获取图像
sensor.snapshot()
控制摄像头捕捉图像
参数:
无
返回:
image类型的对象
(7)关闭摄像头
sensor.shutdown(enable)
启动/关闭摄像头
参数:
enable: 1 开启摄像头0 关闭摄像头
返回:
None
(8)获取分辨率宽度
sensor.width()
获取摄像头分辨率宽度
参数:
无
返回:
int类型的摄像头分辨率宽度
(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
(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
(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类型的寄存器值
厉害厉害{:6_215:} 谢谢鼓励,还在学习中
页:
[1]