一、sensor库
1.1. 初始化单目摄像头
重置并初始化单目摄像头
1|sensor.reset([, freq = 24000000[, set_regs=True[, dual_buff=False]]])
1.1.1. 参数:
·freq: 设置摄像头的时钟频率,越高,帧率越高,但是画质可能更差。默认 24MHz ,可以适当调低。
· set_regs: 允许程序写摄像头寄存器,默认为 True 。 如果需要自定义复位序列,可以设置为 False , 然后使用 sensor._write_reg(addr, value) 函数自定义写寄存器序列。
· dual_buff: 默认为False 。运行使用双缓冲,会增高帧率,但是同时内存占用也会增加(大约为 384KiB)
· choice: 指定需要搜索的摄像头类型, ov类型(1),gc类型(2),mt类型(3),不传入该参数则搜索全部类型摄像头
1.1.2. 返回值
无
一般使用:sensor.init()即可
1.3. 设置帧大小
用于设置摄像头输出帧大小,K210最大支持VGA格式,大于VGA将无法获取图像
(MaixPy开发板配置的屏幕是320*240分辨率,推荐设置为QVGA格式)
1|sensor.set_framesize(framesize[, set_regs=True])
1.3.1 参数
· framesize: 帧大小
· set_regs: 允许程序写摄像头寄存器,默认为True 。如果需要自定义设置帧大小的序列,可以设置为 False ,然后使用 sensor.__write_reg(addr, value) 函数自定义写寄存器序列
1.3.2 返回值
· True: 设置成功
· False: 设置错误
一般使用:sensor.set_framesize(sensor.QVGA)
常用的 framesize 参数有下面这些:
`sensor.QQVGA: 160*120;
`sensor.QVGA: 320*240;
`sensor.VGA: 640*480;
1.4. 设置帧格式
用于设置摄像头输出格式(MaixPy开发板配置的屏幕使用的是RGB565,推荐设置为RGB565格式)
1|sensor.set_pixformat(format[, set_regs=True])
1.4.1. 参数
· format: 帧格式
· set_regs: 允许程序写摄像头寄存器,默认为True 。如果需要自定义设置帧大小的序列,可以设置为 False ,然后使用 sensor.__write_reg(addr, value) 函数自定义写寄存器序列
(可选的帧格式有GRAYSCALE, RGB565, YUV422)
1.4.2. 返回值
· True:设置成功
· False:设置错误
一般使用: sensor.set_pixformat(sensor.RGB565)
可选用的帧格式为: GRAYSCALE(灰度), RGB565, YUV422
1.5. 图像捕捉控制
图像捕捉功能控制
1|sensor.run(enable)
1.5.1 参数
· enable : 1 表示开始抓取图像,0表示停止抓取图像
1.5.2 返回值
· True :设置成功
· False : 设置错误
1.6. 拍摄图像
使用摄像头拍摄一张图片
1|sensor.snapshot()
1.6.1. 参数
无
1.6.2. 返回值
· img :返回的图像对象
1.7. 摄像头控制
关闭摄像头/切换摄像头
1| sensor.shutdown(enable/selsect)
1.7.1. 参数
单目摄像头
·enable: True表示开摄像头,False表示关摄像头
双目摄像头:
· select: 通过写入0或1来切换摄像头。
1.7.2. 返回值
无
1.8. 跳帧
跳过指定帧数或者跳过指定时间内的图像,让相机图像在改变相机设置后稳定下来
1|sensor.skip_frames(n, [, time])
1.8.1.参数
· n: 跳过n帧图像
· time:跳过指定时间,单位为ms
(若 n 和 time 皆未指定,该方法跳过300毫秒的帧;若二者皆指定,该方法会跳过 n 数量的帧,但将在 time 毫秒后返回)
1.8.2. 返回值
无
1.9. 分辨率宽度
获取摄像头分辨率宽度
1|sensor.width()
1,9.1. 参数
无
1.9.2. 返回值
· int 类型的摄像头分辨率宽度
1.10. 分辨率高度
获取摄像头分辨率高度
1| sensor.height()
1.10.1 参数
无
1.10.2. 返回值
· int 类型的摄像头分辨率高度
1.11. 获取帧缓冲
获取当前帧缓冲区
1|sensor.get_fb()
1.11.1. 参数
无
1.11.2. 返回值
· image 类型的对象
1.12. 获取ID
获取当前摄像头ID,需要在摄像头reset之后才能读取到id号
1|sensor.get_id()
1.12.1. 参数
摄像头的id号
1.12.2. 返回值
· int 类型的ID
1.14. 设置对比度
设置相机对比度
1|sensor.set_contrast(contract)
1.14.1. 参数
· constrast:摄像头对比度,范围为[-2,+2]
1.14.2. 返回值
· True :设置成功
· Fales :设置错误
1.15. 设置亮度
设置摄像头亮度
1| sensor.set_brightness(brightness)
1.15.1. 参数
· brightness :摄像头亮度,范围为[-2,+2]
1.15.2. 返回值
· True : 设置成功
· False: 设置错误
1.16. 设置饱和度
设置摄像头饱和度
1|sensor.set_saturation(saturation)
1.16.1. 参数
· constrast :摄像头饱和度,范围为[-2,2]
1.16.2. 返回值
· True:设置成功
· False:设置错误
1.17. 设置自动增益
设置摄像自动增益模式
1| sensor.set_auto_gain(enable,gain_gb)
1.17.1. 参数
· enable:1表示开启自动增益,0表示关闭自动增益
· gain_db:关闭自动增益时,设置摄像头固定增益值,单位为dB
若要追踪颜色,需要关闭自动增益
1.17.2. 返回值
无
1.18. 获取增益值
获取摄像头的增益值
1|sensor.get_gain_db()
1.18.1. 参数
无
1.18.2. 返回值
· float 类型的增益值
1.19. 设置水平镜像
设置水平镜像
1| sensor.set_hmirror(enable)
1.19.1. 参数
· enable:1表示开启水平镜像;0表示关闭水平镜像
1.19.2. 返回值
无
1.20. 设置镜头垂直翻转
设置摄像头垂直翻转
1| sensor.set_vflip(enable)
1.20.1. 参数
· enable:1表示开启,0表示关闭
1.20.2. 返回值
无
1.21. 写入寄存器
往摄像头寄存写入指定值
1| sensor.__write_reg(address, value)
1.21.1. 参数
· adress:寄存器地址
· value: 写入值
1.21.2. 返回值
无
1.22. 读取寄存器
读取摄像头寄存器值
1|sensor.__read_reg(adress)
1.22.1. 参数
· address :寄存器地址
1.22.2. 返回值
· int 类型的寄存器值
二、调用摄像头并将拍摄画面显示在LCD屏幕
# Untitled - By: jiang - 周六 7月 22 2023
import lcd # 导入屏幕类
import sensor # 导入摄像头类
lcd.init() # 初始化屏幕
sensor.reset() # 重置摄像头
sensor.set_pixformat(sensor.RGB565) # 设置帧格式为RGB565
sensor.set_framesize(sensor.QVGA) # 设置帧大小为320*240像素
sensor.run(1) # 图像捕捉启动
while (True): # 写条件判断是为了让语句一直执行。S
img = sensor.snapshot() # 创建图像变量,存储摄像头拍摄的照片,sensor.snapshot()返回值为图像类别
lcd.display(img) # 在LCD屏幕上显示摄像头拍摄的图片