資料介紹
描述
介紹
在本文中,我們將介紹如何使用 Python 編程語言中的 OpenCV 庫在 LattePanda 上實(shí)現(xiàn)人臉識(shí)別。
我們使用的操作系統(tǒng)是 LattePanda 上默認(rèn)的 Windows 10。
1. 軟件準(zhǔn)備
安裝 Python
首先,請(qǐng)從官網(wǎng)下載最新的Python。注意Python有兩個(gè)版本,一個(gè)是2.7.x版本,一個(gè)是3.x版本。2.7.x 版本是較舊的版本,將來會(huì)被棄用,所以在這個(gè)項(xiàng)目中我們使用 Python3,本文中的最新版本是3.6.1 。
請(qǐng)按照下圖安裝。

安裝 Python 時(shí)不要忘記勾選“ Add Python 3.6 to PATH ”選項(xiàng),它使 Windows 系統(tǒng)能夠調(diào)用 Python 可執(zhí)行文件。

安裝后,為了測(cè)試我們是否可以在 LattePanda 上運(yùn)行 Python,請(qǐng)按快捷鍵“Win+R”啟動(dòng)命令提示符并輸入“ cmd ”。

接下來,在 cmd 中鍵入“ python ”以啟動(dòng) Python 交互會(huì)話。如果出現(xiàn)符號(hào)“ >>> ”,則表示 Python 已成功安裝并在您的操作系統(tǒng)上運(yùn)行。否則,如果您看到任何錯(cuò)誤消息,請(qǐng)檢查安裝步驟,尤其是PATH選項(xiàng)。

請(qǐng)輸入“ exit() ”命令退出此shell并返回命令提示符。

安裝所需的軟件包
現(xiàn)在,我們將使用Python 包管理器(pip)安裝這個(gè)項(xiàng)目的三個(gè)必要的 Python 包
1. 請(qǐng)?jiān)诿钐崾痉螺斎搿?pip install numpy ”安裝此Python數(shù)值計(jì)算工具。

2.接下來,輸入“ pip install opencv-python ”來安裝OpenCV,一個(gè)開源的計(jì)算機(jī)視覺庫,我們?cè)谖覀兊捻?xiàng)目中使用它來識(shí)別人臉。

3、最后輸入“ pip install pyserial ”安裝Python的串口通訊工具。我們使用這個(gè)庫與 Python 和 Arduino 建立串行連接。

Thonny - Python IDE
人們可能需要一些工具來有效地編寫代碼。這是我們向您推薦的一個(gè)名為Thonny的優(yōu)秀 Python IDE 。該 IDE 集成了適合初學(xué)者的所有基本工具(調(diào)試器、python shell、變量等)。
您可以從官方網(wǎng)站下載它:.

為了讓 Thonny 使用之前安裝的 Python 包,我們需要將解釋器的默認(rèn)路徑更改為 Windows 系統(tǒng)中 Python 可執(zhí)行文件的位置。
在 thonny IDE 中,單擊工具,然后單擊選項(xiàng)以打開首選項(xiàng)窗口:

在這個(gè)窗口中,點(diǎn)擊interpreter選項(xiàng)卡,將路徑設(shè)置為默認(rèn)的Python安裝路徑,如下圖:

2.硬件
我們?cè)谶@個(gè)項(xiàng)目中使用Logitech C270 網(wǎng)絡(luò)攝像頭(或幾乎任何其他帶有 USB 連接器的網(wǎng)絡(luò)攝像頭)來識(shí)別人臉。而要跟蹤人臉位置,我們需要一個(gè)小的旋轉(zhuǎn)平臺(tái)。如下圖所示,我們使用底部的小型伺服電機(jī)(Tower Pro MG90)來旋轉(zhuǎn)安裝在其上的相機(jī)。您可以在Thingiverse 網(wǎng)站上查看現(xiàn)成的網(wǎng)絡(luò)攝像頭/伺服支架。
請(qǐng)注意,伺服信號(hào)線連接到LattePanda 上的Arduino 引腳 9 。確保正確連接,棕色接地針朝外,如 LattePanda 上標(biāo)記的那樣。

三、軟件實(shí)現(xiàn)
阿杜諾素描
請(qǐng)啟動(dòng) Arduino IDE 并將以下代碼下載到 LattePanda 的 Arduino Leonardo 內(nèi)核(您必須指定正確的 COM 端口,通常是COM4 )。
在這段代碼中,LattePanda 的 Arduino 芯片會(huì)從串口接收到兩條不同的指令,如果指令是“ a ”或“ b ”,則將相機(jī) CCW 或 CW 轉(zhuǎn)動(dòng) 1 度(此值可根據(jù)你的要求)。
由于我們已將伺服連接到 LattePanda Arduino D9引腳,當(dāng)然我們必須在您的 Arduino 草圖(第 9 行)中指定它。如果要將伺服切換到另一個(gè)引腳,請(qǐng)記住將“ s.attach(9) ”這一行中的引腳號(hào)修改為實(shí)際引腳號(hào)。伺服上限 (180) 和伺服下限 (0) 可以根據(jù)物理設(shè)置進(jìn)行修改。
//Arduino sketch
//waiting command from LattePanda (Python) to control servo
#include
Servo s;
int degree = 90;
void setup()
{
Serial.begin(115200);
s.attach(9);
}
void loop()
{
if(Serial.available())
{
int cmd = Serial.read();
if(cmd == 'a')
{
degree++;
if(degree >= 180)
degree = 180;
s.write(degree);
}
else if(cmd == 'b')
{
degree--;
if(degree <= 0) //lower
degree = 0;
s.write(degree);
}
else
Serial.println("Press a/b to turn the camrea!");
}
}
Python 腳本
我們已經(jīng)準(zhǔn)備好了 Python 庫和 IDE,現(xiàn)在讓我們完成人臉跟蹤的實(shí)現(xiàn)。
由于我們要在這個(gè)項(xiàng)目中檢測(cè)人臉,請(qǐng)從OpenCV github(https://github.com/opencv/opencv/tree/master/data/haarcascades)下載現(xiàn)有模型,我們需要兩個(gè)xml文件:
- haarcascade_frontalface_default.xml :用于人臉檢測(cè)
- haarcascade_eye.xml :用于眼睛檢測(cè)。
首先,我們將調(diào)用函數(shù)“ cv2.VideoCapture(0) ”從分辨率為 640x480 的相機(jī)中檢索圖像數(shù)據(jù)。接下來,我們構(gòu)建串行連接(第 9行中的COM4 )與 Arduino 內(nèi)核通信,并使用它來控制伺服角度。
while循環(huán)中的識(shí)別功能就是簡(jiǎn)單地將每一幀中的原始圖像轉(zhuǎn)換為灰度顏色,然后使用識(shí)別模型(face_cascade和eye_cascade)在這一幀中找到最可能的人臉。
如何確定我們想要的臉?該程序?qū)⒂?jì)算圖像中有多少張臉并選擇最大的一張。
為了跟蹤人臉,程序首先計(jì)算人臉的位置(第22行中的position = x + w/2.0 ),x是標(biāo)記人臉的矩形的左上角坐標(biāo),w是矩形的寬度.
LattePanda 得到人臉位置后,將其與圖像中心(#24~27 行)進(jìn)行比較,并發(fā)出命令旋轉(zhuǎn)相機(jī)平臺(tái)以補(bǔ)償差異。
注意,我們已經(jīng)指定中心線為320 (由 640/2 導(dǎo)出,640 是每個(gè)圖像幀的分辨率寬度)。所以如果你想修改分辨率或者使用另一個(gè)網(wǎng)絡(luò)攝像頭,不要忘記改變這個(gè)參數(shù)。
import cv2
import numpy as np
import serial
face_cascade = cv2.CascadeClassifier('./haarcascade_frontalface_default.xml')
eye_cascade = cv2.CascadeClassifier('./haarcascade_eye.xml')
cap = cv2.VideoCapture(0)
cap.set(3, 640)
cap.set(4, 480)
ser = serial.Serial('COM4', 115200)
while True:
_, img = cap.read()
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
faces = face_cascade.detectMultiScale(gray, 2, 5)
if len(faces):
(x, y, w, h) = max(faces, key=lambda face: face[2]*face[3])
cv2.rectangle(img,(x,y),(x+w,y+h),(255,0,0),2)
roi_gray = gray[y:y+h, x:x+w]
roi_color = img[y:y+h, x:x+w]
eyes = eye_cascade.detectMultiScale(roi_gray)
for (ex,ey,ew,eh) in eyes:
cv2.rectangle(roi_color,(ex,ey),(ex+ew,ey+eh),(0,255,0),2)
position = x + w/2.0
print(position)
if position < 320:
ser.write(b'a')
else:
ser.write(b'b')
cv2.imshow('face', img)
k = cv2.waitKey(5) & 0xFF
if k == 27:
break
cv2.destroyAllWindows()
演示視頻
檢查這個(gè)項(xiàng)目的性能,我們?cè)?a href='http://m.xsypw.cn/v/tag/107/' target='_blank' class='arckwlink_none'>手機(jī)上顯示一張人臉圖片,你可以看到網(wǎng)絡(luò)攝像頭會(huì)嘗試將其中心對(duì)準(zhǔn)人臉。欣賞~
?
- 使用Xbox Kinect和OpenCV進(jìn)行面部識(shí)別
- YNH-950 人臉識(shí)別主板規(guī)格書
- 非理想環(huán)境下的改進(jìn)人臉識(shí)別算法 3次下載
- 基于聚類分析的復(fù)雜環(huán)境中人臉目標(biāo)識(shí)別技術(shù) 10次下載
- 利用小尺度核卷積的人臉表情識(shí)別方法 9次下載
- 基于深度學(xué)習(xí)的快速人臉識(shí)別算法及模型 13次下載
- 基于圖像融合的視頻人臉識(shí)別算法就相關(guān)指標(biāo) 12次下載
- 如何實(shí)現(xiàn)復(fù)雜背景中的快速人臉識(shí)別技術(shù)研究 15次下載
- 使用OpenCV進(jìn)行車牌數(shù)字識(shí)別的資料免費(fèi)下載 29次下載
- 如何提高復(fù)雜環(huán)境下的人臉識(shí)別的增強(qiáng)算法資料概述 8次下載
- openCV人臉檢測(cè)系統(tǒng)的設(shè)計(jì)方案探究 3次下載
- OpenCV3編程入門-源碼例程全集-人臉識(shí)別 2次下載
- 人臉識(shí)別 13次下載
- 基于OpenCV的圖像特征智能識(shí)別系統(tǒng)設(shè)計(jì) 20次下載
- 基于openCV的人臉檢測(cè)識(shí)別系統(tǒng)的設(shè)計(jì) 477次下載
- 基于OpenCV的人臉識(shí)別系統(tǒng)設(shè)計(jì) 1.2w次閱讀
- 人臉識(shí)別技術(shù)的原理是什么 人臉識(shí)別技術(shù)的特點(diǎn)有哪些 2124次閱讀
- 一文看懂人臉識(shí)別技術(shù) 3167次閱讀
- 基于SeetaFace2和OpenCV實(shí)現(xiàn)人臉識(shí)別 2759次閱讀
- 什么是人臉識(shí)別?如何使用10行代碼實(shí)現(xiàn)人臉識(shí)別 5475次閱讀
- 人臉識(shí)別的原理揭秘 6776次閱讀
- 人臉識(shí)別技術(shù)及應(yīng)用概覽 2184次閱讀
- 基于OpenCV和 Python的人臉識(shí)別實(shí)現(xiàn)方案 3929次閱讀
- 滴滴人臉識(shí)別怎么破解 11.9w次閱讀
- 人臉識(shí)別技術(shù)原理分析及典例詳解 9228次閱讀
- 人臉識(shí)別幾種解決方案的對(duì)比_人臉識(shí)別技術(shù)原理介紹 8w次閱讀
- 人臉識(shí)別考勤機(jī)優(yōu)缺點(diǎn)分析 2w次閱讀
- opencv人臉識(shí)別原理 8541次閱讀
- 人臉識(shí)別技術(shù)原理、特點(diǎn)及應(yīng)用 2382次閱讀
- 人臉識(shí)別成金融業(yè)“新寵” 1073次閱讀
下載排行
本周
- 1涂鴉各WiFi模塊原理圖加PCB封裝
- 11.75 MB | 76次下載 | 1 積分
- 2錦銳科技CA51F2 SDK開發(fā)包
- 24.06 MB | 29次下載 | 1 積分
- 3錦銳CA51F005 SDK開發(fā)包
- 19.47 MB | 3次下載 | 1 積分
- 4蘋果iphone 11電路原理圖
- 4.98 MB | 3次下載 | 2 積分
- 5基礎(chǔ)模擬電子電路
- 3.80 MB | 3次下載 | 1 積分
- 6RA-Eco-RA6M4-100PIN-V1.0開發(fā)板資料
- 34.89 MB | 1次下載 | 免費(fèi)
- 7STM32F3系列、STM32F4系列、STM32L4系列和STM32L4+系列Cortex-M4編程手冊(cè)
- 3.32 MB | 1次下載 | 免費(fèi)
- 8聯(lián)想A820t手機(jī)維修圖紙包括主板原理圖 尾板原理圖 點(diǎn)位圖
- 0.62 MB | 次下載 | 5 積分
本月
- 1AI智能眼鏡產(chǎn)業(yè)鏈分析
- 4.43 MB | 383次下載 | 免費(fèi)
- 2蘇泊爾電磁爐線路的電路原理圖資料合集
- 2.02 MB | 296次下載 | 5 積分
- 3貼片三極管上的印字與真實(shí)名稱的對(duì)照表詳細(xì)說明
- 0.50 MB | 94次下載 | 1 積分
- 4長(zhǎng)虹液晶電視R-HS310B-5HF01的電源板電路原理圖
- 0.46 MB | 91次下載 | 5 積分
- 5涂鴉各WiFi模塊原理圖加PCB封裝
- 11.75 MB | 76次下載 | 1 積分
- 6錦銳科技CA51F2 SDK開發(fā)包
- 24.06 MB | 29次下載 | 1 積分
- 7AO4803A雙P通道增強(qiáng)型場(chǎng)效應(yīng)晶體管的數(shù)據(jù)手冊(cè)
- 0.11 MB | 28次下載 | 2 積分
- 8長(zhǎng)虹液晶彩電LS29機(jī)芯的技術(shù)資料說明
- 3.42 MB | 16次下載 | 2 積分
總榜
- 1matlab軟件下載入口
- 未知 | 935127次下載 | 10 積分
- 2開源硬件-PMP21529.1-4 開關(guān)降壓/升壓雙向直流/直流轉(zhuǎn)換器 PCB layout 設(shè)計(jì)
- 1.48MB | 420064次下載 | 10 積分
- 3Altium DXP2002下載入口
- 未知 | 233089次下載 | 10 積分
- 4電路仿真軟件multisim 10.0免費(fèi)下載
- 340992 | 191388次下載 | 10 積分
- 5十天學(xué)會(huì)AVR單片機(jī)與C語言視頻教程 下載
- 158M | 183342次下載 | 10 積分
- 6labview8.5下載
- 未知 | 81588次下載 | 10 積分
- 7Keil工具M(jìn)DK-Arm免費(fèi)下載
- 0.02 MB | 73815次下載 | 10 積分
- 8LabVIEW 8.6下載
- 未知 | 65988次下載 | 10 積分
評(píng)論