基于OpenCV的人臉追蹤
點擊上方“小白學(xué)視覺”,選擇加"星標(biāo)"或“置頂”
重磅干貨,第一時間送達(dá)
在Raspberry上啟動項目很簡單,所以讓我們開始吧。

Raspberry Pi 4 Model B — 4GB
適用于Raspberry Pi的Pan-Tilt HAT
Pi Camera v2 8MP
微型SD卡
迷你HDMI電纜
Raspberry Pi攝像頭電纜—尺寸:457mm x 16mm(18“ x 0.6”)
USB-C充電器
USB-C外接電池(強(qiáng)烈建議選購)
云臺HAT的選擇是非常重要的。因為我們必須找到一種控制Pan-Tilt HAT的方法。我們使用的是Waveshare的Pan-Tilt HAT,小伙伴們可能需要花費一些時間來了解如何通過鍵盤或者通過HAT手動控制伺服電機(jī)。USB-C輸出的電池對于Raspberry上的項目(其中Raspberry必須是可移動的)非常有用。
安裝Raspberry操作系統(tǒng):您可以選擇任何Python可以正常運行的系統(tǒng)。這是Raspberry OS的官方頁面:https?:?//www.raspberrypi.org/downloads。推薦使用Raspberry Pi OS
為樹莓派啟用Pi相機(jī)
在Raspberry上啟用SSH
安裝Python,建議使用版本3
建議安裝OpenCV 4.2版
如果Python缺少某些模塊,請不要擔(dān)心,并在Raspberry或Python社區(qū)中搜索其安裝
這部分對我們來說比較困難,為什么會有一定的困難?因為,有兩種方法可以控制伺服電機(jī):
直接將伺服電機(jī)插入Raspberry,然后直接通過Raspberry控制它們,在這種情況下,需要使用GPIO接口
將伺服電機(jī)插入HAT平臺,然后將HAT插入Raspberry。因此,我們需要先控制HAT平臺,然后再由HAT平臺控制我們的伺服電機(jī)。在這種情況下可以使用waveshare PCA9685提供的給定驅(qū)動程序
這部分雖然不是強(qiáng)制性的,但強(qiáng)烈建議使用。

伺服軸的螺絲
重要的是,一開始就不要擰緊伺服軸的螺釘,只需以可以自由旋轉(zhuǎn)的方式稍微固定一下即可。使用鍵盤上的控件,大家可以嘗試在0位置旋轉(zhuǎn)舵機(jī),然后將攝像機(jī)移動到首選的起始位置,現(xiàn)在可以擰緊伺服軸的螺釘。(云臺螺釘在底座下方,因此我們需要在基座上安裝云臺,然后進(jìn)行校準(zhǔn),拆卸和擰緊云臺螺釘,然后再重新安裝)
>使用默認(rèn)情況下隨OpenCV一起提供的預(yù)安裝CascadeClassifier來使操作變得簡單。我們的工作重點是如何控制平移和傾斜角度。
CascadeClassifier具有在OpenCV目錄+ /data/haarcascade_frontalface_default.xml中找到的正面人臉識別的預(yù)訓(xùn)練
所述CascadeClassifier給我們直接一組用于幀中的每個檢測到的面部信息(X,Y,W,H)。(x,y)是檢測到的面部的左上角的位置,(w,h)是檢測到的面部的高度和與之的距離,根據(jù)這些信息,我們可以計算出檢測到的面部的中心。
>臉部中心
當(dāng)我們得到(x,y)時,將控制我們的搖攝和俯仰伺服器將攝像機(jī)移動到面部中心應(yīng)靠近鏡框中心的位置
>偽PD控制器
為什么是偽PD?因為我們的伺服器沒有位置傳感器,所以我們不知道機(jī)器人攝像頭的搖攝角度和傾斜角度。因此,我們不能嚴(yán)格使用反饋控制。我使用了一個偽PD控制器,該控制器僅使用delta_PAN來遞增/遞減相機(jī)的pan-angle(resp。til-angle):
delta_PAN = k_PAN * delta_x + kd_PAN * delta_x_dot
大致來說,它是一種前饋控制器。
如果您在我們沒有有關(guān)伺服器位置的信息時找到了一種更好的控制方式,請給我發(fā)送電子郵件告知我。
>拓展
我嘗試添加一些隨機(jī)消息模塊:
bonjour:相機(jī)第一次檢測到臉部時的隨機(jī)歡迎消息
cachecache:當(dāng)我們在相機(jī)前停留太長時間時,隨機(jī)顯示“遠(yuǎn)離我”消息
缺少:什么都沒檢測到的隨機(jī)消息
但是,添加這些消息有時會使算法產(chǎn)生一定的滯后。因此,大家可以消除這些模塊以使相機(jī)更快。
>多臉檢測
CascadeClassifier可以在一幀中找到多張臉,但是我將PD控制器限制為僅檢測到一張臉1張臉的情況。輪到您改善此問題了。一種想法是計算檢測到的面部的質(zhì)心。

代碼鏈接:https : //github.com/nguyenrobot/palt-tilt-cam
交流群
歡迎加入公眾號讀者群一起和同行交流,目前有SLAM、三維視覺、傳感器、自動駕駛、計算攝影、檢測、分割、識別、醫(yī)學(xué)影像、GAN、算法競賽等微信群(以后會逐漸細(xì)分),請掃描下面微信號加群,備注:”昵稱+學(xué)校/公司+研究方向“,例如:”張三?+?上海交大?+?視覺SLAM“。請按照格式備注,否則不予通過。添加成功后會根據(jù)研究方向邀請進(jìn)入相關(guān)微信群。請勿在群內(nèi)發(fā)送廣告,否則會請出群,謝謝理解~
