OpenMV是基于嵌入式STM32单片机的基础上,经过层层封装之后,运用microPython语法开发的模块。

导入函数

import语句用来导入其他python文件(称为模块module),使用该模块里定义的类、方法或者变量。

import sensor,image,time

此次分别导入了sensor感光模块,图像模块,计时模块。
或者用
import 函数名 from 类

设置摄像头

sensor.reset()#初始化感光元件
sensor.set_pixformat(sensor.RGB565)#设置为彩色
sensor.set_framesize(sensor.QVGA)#设置图像的大小
sensor.skip_frames(time=2000)#跳过n张照片,在更改设置后,跳过一些帧,等待感光元件变稳定。2000ms=2s
颜色设置:、

sensor.GRAYSCALE: 灰度,每个像素8bit。
sensor.RGB565: 彩色,每个像素16bit。

图像大小:

sensor.QQCIF: 88x72
sensor.QCIF: 176x144
sensor.CIF: 352x288
sensor.QQSIF: 88x60
sensor.QSIF: 176x120
sensor.SIF: 352x240
sensor.QQQQVGA: 40x30
sensor.QQQVGA: 80x60
sensor.QQVGA: 160x120
sensor.QVGA: 320x240
sensor.VGA: 640x480
sensor.HQQQVGA: 80x40
sensor.HQQVGA: 160x80
sensor.HQVGA: 240x160
sensor.B64X32: 64x32 (用于帧差异 image.find_displacement())
sensor.B64X64: 64x64 用于帧差异 image.find_displacement())
sensor.B128X64: 128x64 (用于帧差异 image.find_displacement())
sensor.B128X128: 128x128 (用于帧差异 image.find_displacement())
sensor.LCD: 128x160 (用于LCD扩展板)
sensor.QQVGA2: 128x160 (用于LCD扩展板)
sensor.WVGA: 720x480 (用于 MT9V034)
sensor.WVGA2:752x480 (用于 MT9V034)
sensor.SVGA: 800x600 (仅用于 OV5640 感光元件)
sensor.XGA: 1024x768 (仅用于 OV5640 感光元件)
sensor.SXGA: 1280x1024 (仅用于 OV5640 感光元件)
sensor.UXGA: 1600x1200 (仅用于 OV5640 感光元件)
sensor.HD: 1280x720 (仅用于 OV5640 感光元件)
sensor.FHD: 1920x1080 (仅用于 OV5640 感光元件)
sensor.QHD: 2560x1440 (仅用于 OV5640 感光元件)
sensor.QXGA: 2048x1536 (仅用于 OV5640 感光元件)
sensor.WQXGA: 2560x1600 (仅用于 OV5640 感光元件)
sensor.WQXGA2: 2592x1944 (仅用于 OV5640 感光元件)

帧率时钟

clock=time.clock() # 以浮点数返回当前CPU时钟
clock.tick()    #更新FPS帧率时钟 图像帧率
clock.fps()		#返回帧数

传输图像

img=sensor.snapshot() #意思时快照的意思,所以将载流帧,给img

感兴趣区(ROI)

roi是从左上角的坐标开始向下和向右来括定区域的。
所以roi的格式为(x, y, w, h)
x:ROI区域中左上角的x坐标
y:ROI区域中左上角的y坐标
w:ROI的宽度
h:ROI的高度
roi是将传送的图像切割,相当于截图,其他部分忽略掉。
以下即可设置感兴趣区

img.get_statistics(roi=(0,0,10,20))

或者设置一定区域从中间取

sensor.set_framesize(sensor.VGA) # 高分辨率
sensor.set_windowing((640, 80)) #取中间的640*80区域,你可以设置windowing窗口来减少搜索图片。

可在IDE中,查看其大小,也可以外接led查看。

获取像素/设置像素点

image.get_pixel(x,y)
来获取一个像素点的信息, 可返回灰度值或颜色的rgb值

image.set_pixel(x,y,pixel)
来设置(x,y)像素点的颜色
例如:

img = sensor.snapshot()
img.get_pixel(10,10)
img.set_pixcel(10,10,(255,0,0))#设置坐标(10,10)的像素点为红色(255,0,0)
片`

对图像数据进行分析

image.width()
返回图像的宽度(像素)

image.height()
返回图像的高度(像素)

image.format()
灰度图会返回 sensor.GRAYSCALE,彩色图会返回 sensor.RGB565。

image.size()
返回图像的大小(byte)

image.invert()
取反,对于二值化的图像,0(黑)变成1(白),1(白)变成0(黑)。

image.nand(image)
与另一个图片进行与非(NAND)运算。

image.nor(image)
与另一个图片进行或非(NOR)运算。

image.xor(image)
与另一个图片进行异或(XOR)运算。

image.xnor(image)
与另一个图片进行异或非(XNOR)运算。

image.difference(image)
从这张图片减去另一个图片。比如,对于每个通道的每个像素点,取相减绝对值操作。这个函数,经常用来做移动检测

灰度的计数函数
statistics.mean() 返回灰度的平均数(0-255) (int)。你也可以通过statistics[0]获得。
statistics.median() 返回灰度的中位数(0-255) (int)。你也可以通过statistics[1]获得。
statistics.mode() 返回灰度的众数(0-255) (int)。你也可以通过statistics[2]获得。
statistics.stdev() 返回灰度的标准差(0-255) (int)。你也可以通过statistics[3]获得。
statistics.min() 返回灰度的最小值(0-255) (int)。你也可以通过statistics[4]获得。
statistics.max() 返回灰度的最大值(0-255) (int)。你也可以通过statistics[5]获得。
statistics.lq() 返回灰度的第一四分数(0-255) (int)。你也可以通过statistics[6]获得。
statistics.uq() 返回灰度的第三四分数(0-255) (int)。你也可以通过statistics[7]获得。

彩色的计数函数
l_mean,l_median,l_mode,l_stdev,l_min,l_max,l_lq,l_uq,
a_mean,a_median,a_mode,a_stdev,a_min,a_max,a_lq,a_uq,
b_mean,b_median,b_mode,b_stdev,b_min,b_max,b_lq,b_uq,
三个通道的分别是平均数,中位数,众数,标准差,最小值,最大值,第一四分数,第三四分数。