openMV人脸追踪

网站跳转

openmv中文网站
廖雪峰python

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

一阶低通滤波器的数字实现

  • 一阶低通滤波器微分方程
    RCdydx+y=x
    对连续函数离散化

y[n]= kx[n] +(1-k)y[n-1]

  • 当前使用值取决于当前检测值与前一刻使用值
  • 通过滤波实现对尖峰值的平滑处理,k就是平滑因子
derivative = self._last_derivative 
  + ((delta_time / (self._RC + delta_time)) * (derivative - self._last_derivative))
posted @ 2025-09-27 19:17  loong2525  阅读(47)  评论(0)    收藏  举报