概述
源代码整体预览:
import sensor
import clock
sensor.reset()
sensor.set_pixformat(sensor.RG565)
sensor.set_framesize(sensor.QVGA)
sensor.skip_frames(time=2000)
clock = time.clock()
while(True):
clock.tick()
img = sensor.snapshot()
print(clock.fps())
解释
import sensor
导入感光模块,可以设置采集到的图片的一些格式。详情见文末彩蛋
import clock
导入计时模块
sensor.reset()
清除掉之前摄像头存在的代码对于图片的设置
sensor.set_pixformat(sensor.RGB565)
设置图片的格式,这个565是说存储RGB三个通道每个通道存储像素值所对应的二进制位分别是5,6,5。相关介绍见彩蛋,
RGB565和RHB二进制示例的比较
通道 | RGB565 | RGB | 变化 |
---|---|---|---|
R | 10101 | 10101000 | 左移三位 |
G | 100010 | 10001000 | 左移两位 |
B | 00101 | 00101000 | 左移三位 |
sensor.set_framesize(sensor.QVGA)
设置采集到图片的分辨率
预设大小 | 窗口宽度 | 窗口高度 |
---|---|---|
VGA | 640 | 480 |
QVGA | 320 | 240 |
QQVGA | 160 | 120 |
sensor.skip_frames(time = 2000)
跳过一些刚开始不稳定的时候再开始读取图像,
函数原型是:sensor.skip_frames([n,time])
两种方式实现:
- sensor.skip_frame(20) # 跳过20帧数
- sensor.skip_frame(time=2000) # 跳过2000ms=2s
clock.tick()
更新图像的帧率
img = sensor.snapshot()
snapshot的中文意思是快照的意思,所以这里是截取sensor摄像头的视屏流的当前帧,给img对象
print(clock.fps())
将帧率打出来
彩蛋
- 摄像头简要:
链接:https://pan.baidu.com/s/1qZZppiW 密码:7l58,请看视频的前半部分即可;
- 图片通道:
RGB原本对应的存储是8位,所以各个通道的取值范围是 28-1= 255。所以调整的值变化范围在(0,255)。每一个通道的每一个像素都对应一个0-255的像素值。举一个例子,比如一张RGB三通道图片,R通道的1行1列的像素对应的像素值是0,G通道的1行1列的像素对应的像素值是0,B通道的1行1列的像素对应的像素值是255。那么这张图片的1行1列就是一个纯蓝色的像素,换句话说就是R,G,B三张图片叠加在一起就是一般的RGB图片。
- 关于分辨率
这里直接截取《大学物理下册–科学出版社,徐江荣,葛凡主编》的内容:
关于帧率:
1/ 帧率 = 平均时间,这里后期在详细的写图像深度:
存储每一个像素所用的bit,度量图像的色彩分辨率,
决定了彩色图像中可出现的最多颜色数,或灰度图像中的最大值
一幅彩色图像RGB3个分量的像素位数分别为4,4,2,则最大颜色数目为2的4+4+2次方,即1024,就是说像素的深度为10位,每个像素可以是1024种颜色中的一种
注意深度图像是指:
深度图像 = 普通的RGB三通道彩色图像 + Depth Map
比如用图像的灰度值便是离那一点的距离
本文参考了一些其他资料,原出处已经不可考证,如果侵犯了原创者版权,请尽快与我联系,我会删除相关内容
最后
以上就是聪明汉堡为你收集整理的OpenMV学习笔记(一)的全部内容,希望文章能够帮你解决OpenMV学习笔记(一)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复