hockel 发表于 2020-4-28 16:41:04

【MaixPy 教程】用mixly玩转K210——人脸追踪

## 【MaixPy 教程】用mixly玩转K210——人脸追踪


【MaixPy系列教程:】
+ [【MaixPy教程】用maixHub训练模型进行开源硬件识别](https://mc.dfrobot.com.cn/thread-304993-1-1.html)
+ [【MaixPy 教程】用mixly玩转K210——口罩识别](https://mc.dfrobot.com.cn/thread-305026-1-1.html)
+ [【MaixPy教程】用mixly玩转K210——调用AI-OneNET API实现车牌识别](https://mc.dfrobot.com.cn/thread-305038-1-1.html)
+ [【MaixPy 教程】用mixly玩转K210——人脸追踪](https://mc.dfrobot.com.cn/thread-305097-1-1.html)
+ [【MaixPy 教程】用mixly玩转K210——20类对象检测](https://mc.dfrobot.com.cn/thread-305125-1-1.html)
+ [【MaixPy 教程】用mixly玩转K210——一键本地模型训练](https://mc.dfrobot.com.cn/thread-305291-1-1.html)
+ [【MaixPy 教程】用mixly玩转k210——MixNo通过TCP/IP与掌控板进行通讯](https://mc.dfrobot.com.cn/thread-305317-1-1.html)

## 前言

之前在sipeed blog 看到一篇教程:[【MaixPy 人脸追踪云台教程】](https://blog.sipeed.com/p/233.html)里面用到了代码编程和pid算法!但对于小朋友或者初学者入门比较难,今天就让我带领大家用图形化编程编写一个 人脸追踪案例!好了废话不多说!Let's Go!!!
## 准备阶段
### 所需要材料


1、需要一个舵机云台(可以3D打印(https://www.thingiverse.com/thing:708819)或者在某宝买一个

2、MaixPy dock 一个
3、9克舵机(sg90)两个
4、杜邦线若干

### 云台组装
1、组装X轴舵机(ps:控制摄像头水平方面的移动)

2、组装y轴方面的舵机(ps:可以控制摄像头竖直方向的移动)

3、使用 公对母 杜邦线连接 舵机信号线 与dock。

`舵机线定义为:红色:5V;褐色:GND;黄色:信号线。`

我们将底部舵机的信号线连接至dock的16脚,第二个舵机的信号线连接至17脚。(如果连接反,后面的动作会异常,交换两根线即可【mixly中自己重新写入了io-17、io-16】)

## 程序编写
### 1、刷入人脸检测模型
人脸模型可以在(https://www.maixhub.com/)或者百度网盘下载(链接: https://pan.baidu.com/s/1007krAq_oZspySxmnAVPkw 提取码: caeg 复制这段内容后打开百度网盘手机App,操作更方便哦)

下載好模型,用kflash_gui把人脸检测模型刷入到dock的flash的地址:0x300000。(或者是将模型文件保存到TF卡中)

### 人脸检测
1、首先将我们的摄像头、显示屏、和KPU进行初始化后,获取摄像头的图片,用yolo2运行网络积木块,获取图像的信息,返回一个字典(我们需要用到的是"x","y","w","h"等键所对应的值)。具体操作如下:

2、标记人脸部分,在机器视觉指令中找到绘制矩形和绘制十字积木块、用矩形解析积木块将`code`中`i`数据解析后的`"x","y","w","h"`显示在屏幕上,具体操作如下:


### 人脸追踪
首先我们需要定义两个定时器和初始化兩個舵機。
```
PWM: 脉宽调制模块, 硬件支持的PWM, 可以指定任意引脚(0到47引脚)
每个 PWM 依赖于一个定时器, 即当定时器与 PWM 功能绑定后, 不能作为普通定时器使用了。
因为有 3 个定时器, 每个定时器有 4 个通道, 即最大可以同时产生 12 路 PWM 波形
```

我们的摄像头的帧大小是320 * 240,我们需要对检测的摄像头检测到不同位置的脸,采取不同的操作:看下图:

如果人脸的中心x位置小于150,让水平舵机 变量`X轴 = X轴 -2`,如果人脸中心的x位置大于170,让水平舵机 变量`Y轴 = Y轴 + 2`.如果人脸中心的Y位置小于110,让水平舵机 变量`Y轴 = Y轴 +2`,如果人脸中心的Y位置大于130,让水平舵机 变量`Y轴 = Y轴 - 2`,再结合舵机角度的范围进行判断。具体程序如下:

**注:**
1、由于人距离摄像的远近会改变人脸中心,x,y的变化,为了更好的演示效果,我将检测到的人脸大小規定在一定的範圍内。
2、可以加入PID算法,让舵机转动更加精准。

## 程序演示
https://v.youku.com/v_show/id_XNDY1MjI5MTMxNg==.html?firsttime=0








Mr Guo 发表于 2020-4-28 22:12:30

这个模块支持拍照吗

hockel 发表于 2020-4-29 07:46:27

Mr Guo 发表于 2020-4-28 22:12
这个模块支持拍照吗

支持的!郭老师

DFHJM_IpFmV 发表于 2020-7-2 11:17:16

hockel 发表于 2020-4-29 07:46
支持的!郭老师

拍视频可以吗?

DFHJM_IpFmV 发表于 2020-7-2 11:20:39

Mr Guo 发表于 2020-4-28 22:12
这个模块支持拍照吗

这是个好问题啊,郭老师。@MR Guo

PeE_frhZ 发表于 2020-7-8 17:14:40

软件有链接吗   链接失效了

李洪宇 发表于 2022-10-13 15:18:18

有程序吗?

zhoua201 发表于 2023-7-27 18:55:09

这个mixly的K210库有吗/

三春牛-创客 发表于 2023-8-16 14:12:10

厉害厉害

三春牛-创客 发表于 2023-8-16 14:13:12

支持,赞一个

花生编程 发表于 2023-8-17 12:03:38

厉害厉害

花生编程 发表于 2023-8-17 12:04:49

赞赞赞赞赞
页: [1]
查看完整版本: 【MaixPy 教程】用mixly玩转K210——人脸追踪