openMV人脸追踪
网站跳转
openmv
模块
sensor
import sensor#引入感光元件的模块
# 设置摄像头
sensor.reset()#初始化感光元件
sensor.set_pixformat(sensor.RGB565)#设置为彩色
sensor.set_framesize(sensor.QVGA)#设置图像的大小
sensor.skip_frames()#跳过n张照片,在更改设置后,跳过一些帧,等待感光元件变稳定。
# 一直拍照
while(True):
img = sensor.snapshot()#拍摄一张照片,img为一个image对象
- 自动增益/白平衡/曝光
- 颜色追踪关闭白平衡和自动增益
- 设置窗口感兴趣区(ROI)
- 设置翻转
image
image图像对象是机器视觉操作的基本对象。其方法涉及
- 对某点像素值操作
image.get_pixel(x,y)
image.set_pixel(x,y) - 获取图像信息
image.width()
image.height()
image.format()# 返回灰度还是彩色
image.size() # 返回图像大小byte - 图像数学方法运算
#图像可以是从文件读入的iamge对象,但是二者必须是相同的尺寸和类型(灰色/彩色
image.invert() # 取反,二值图像0变1,1变0
image.nand(image) #与非
image.nor(image) #或非
image.xor(image) #异或
image.xnor(image) # 异或非
image.difference(image) # 从一张图片减去另一张图片,绝对值相减,经常用于移动检测
- 绘制图形
- ISP方法
使用灰世界算法对图像执行自动白平衡。此方法作用于RAW Bayer图像,因此可以在将图像转换为RGB565或将RAW Bayer图像传递给图像处理函数之前提高图像质量。你也可以在RGB565图像上调用此方法。此方法对二值图像或灰度图像没有任何影响。
statistic
- 对灰度和LAB图像处理不同
image.get_statistics(roi=(x,y,w,h))显示声明
追踪实现
拍摄图片 -> 人脸识别 -> 获取图片中心点和人脸中心点 -> error进入pid控制 -> 舵机控制
云台舵机
servo 对象
- Servo(1)为 P7 ;
Servo(2)为 P8 ;
Servo(3)为 P9 ; - 使用Time(5)作为PWM输出
- 注:不同角度的舵机需要不同的pulse
pid
一阶低通滤波器的数字实现
- 一阶低通滤波器微分方程
对连续函数离散化
y[n]= kx[n] +(1-k)y[n-1]
- 当前使用值取决于当前检测值与前一刻使用值
- 通过滤波实现对尖峰值的平滑处理,k就是平滑因子
derivative = self._last_derivative
+ ((delta_time / (self._RC + delta_time)) * (derivative - self._last_derivative))

浙公网安备 33010602011771号