Pcduino是一款兼容Arduino接口的mini pc,A8架構1Ghz的CPU,計算能力不俗,用來跑OpenCV剛剛好。這裡就用他們實現一個可以跟隨人臉移動的攝像頭。
硬件清單:
1、Pcduino一塊
2、傳感器擴展板一塊
3、攝像頭雲台一個
4、攝像頭一個
軟件環境:
1、Pcduino板載Ubuntu
2、GCC 4.6
3、QT 4.8.5:http://qt-project.org/downloads
4、OpenCV 2.4.7:http://opencv.org/downloads.html
5、Arduino SDK(c_enviroment):https://github.com/pcduino/c_enviroment
在開始動手前,我們先來捋一下思路。
通過OpenCV可以方便的實現Face Detect,OpenCV的sample目錄就有這個例子。流程大致是從攝像頭得到逐幀的圖像,通過事先訓練好的特征檢測出人臉的坐標(即圖像的像素坐標),最後在該幀圖像上圈出人臉的位置。
我們需要的就是這個人臉的坐標,先計算出人臉坐標x軸和y軸分別偏離畫面中心點的距離(單位:像素),然後根據這個偏離值驅動攝像頭的雲台去修正攝像頭的指向,使人臉坐標與畫面中心點重合(即指向人臉)。
思路清晰了,我們現在開工:)
硬件部分
硬件部分安裝比較簡單,先在Pcduino上接駁傳感器擴展板,再把雲台兩個舵機分別接在傳感器擴展板PWM 5、6針腳上(PWM與GPIO共用5、6針腳,選用5、6是因為只有5、6是硬件PWM,不會使CPU占用率太高)。
這裡需要注意的一點是,如果你選用的是大功率的雲台和舵機,需要為舵機獨立供電。
這是安裝好的樣子
軟件部分
編譯安裝OpenCV:
1、先安裝各種依賴庫,根據你的環境不同,可能出現缺失,全都補上,以求OpenCV一次編譯通過(因為編譯過程耗時將近3小時。。。)
sudo apt-get install build-essential libgtk2.0-dev libavcodec-dev libavformat-dev libjpeg62-dev libtiff4-dev cmake libswscale-dev libjasper-dev
2、下載解壓OpenCV包,用cmake工具生成編譯所需的信息,第四句說明編譯成release版本,安裝目錄是/usr/local
cd ~/opencv
mkdir release
cd release
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local ..