【MaixPy 教程】用mixly玩轉K210——人臉追蹤

【MaixPy 教程】用mixly玩轉K210——人臉追蹤

在這裏插入圖片描述

前言

【MaixPy系列教程:】

之前在sipeed blog 看到一篇教程:【MaixPy 人臉追蹤雲臺教程】裏面用到了代碼編程和pid算法!但對於小朋友或者初學者入門比較難,今天就讓我帶領大家用圖形化編程編寫一個 人臉追蹤案例!好了廢話不多說!Let’s Go!!!

準備階段

所需要材料

在這裏插入圖片描述

1、需要一個舵機雲臺(可以3D打印mini 舵機雲臺或者在某寶買一個

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、刷入人臉檢測模型

人臉模型可以在maixhub下載或者百度網盤下載(鏈接: https://pan.baidu.com/s/1007krAq_oZspySxmnAVPkw 提取碼: caeg 複製這段內容後打開百度網盤手機App,操作更方便哦)
在這裏插入圖片描述
下載好模型,用kflash_gui把人臉檢測模型刷入到dock的flash的地址:0x300000。(或者是將模型文件保存到TF卡中)
在這裏插入圖片描述

人臉檢測

1、首先將我們的攝像頭、顯示屏、和KPU進行初始化後,獲取攝像頭的圖片,用yolo2運行網絡積木塊,獲取圖像的信息,返回一個字典(我們需要用到的是"x",“y”,“w”,"h"等鍵所對應的值)。具體操作如下:
在這裏插入圖片描述
2、標記人臉部分,在機器視覺指令中找到繪製矩形和繪製十字積木塊、用矩形解析積木塊將codei數據解析後的"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算法,讓舵機轉動更加精準。

程序演示

用mixly玩轉K210——人臉追蹤.mp4

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章