現在讀者對圖片的數據表示方式以及人臉識別的基本原理已經有所了解。本節利用開源工具來具體實現人臉檢測和人臉識別,所用數據可在教材資源平台下載。人臉識別是一個複雜的問題,為了達到一定的準確率,所需的工程量遠遠不是本教材這一節的內容所能描述的,讀者可在實踐過程中繼續探索。
上一節簡單介紹了人臉檢測背後的原理,下麵首先通過OpenCV來實現人臉檢測。
使用以下命令在Python環境中加載OpenCV模塊。
In[1]:import cv2
#引入OpenCV模塊
In[2]:faceClassifier=cv2.CascadeClassifier('haarcascade_front
alface_default.xml')
#構建OpenCV模塊提供的臉部分類器,它用Harr特征檢測臉部
In[3]:objImage=cv2.imread('facedetect.jpg')
#讀取要進行人臉檢測的圖片
In[4]:cvtImage=cv2.cvtColor(objImage,cv2.COLOR_BGR2GRAY)
#將圖片轉化為灰度圖像(Gray)
In[5]:foundFaces=faceClassifier.detectMultiScale(objImage,sca
leFactor=1.3,minNeighbors=9,minSize=(50,50),fl
ags=cv2.cv.CV_HAAR_SCALE_IMAGE)
#該命令返回檢測到的臉部,每一張檢測到的臉都會給出左上角的坐標和臉部
#區域的長和寬。相當於描述了一個方框,將臉部圈起來
In[6]:facenumbers=len(foundFaces)
#該命令給出檢測到的人臉數量
In[7]:for(x,y,w,h)in foundFaces:
cv2.rectangle(objImage,(x,y),(x+w,y+h),(0,0,255),2)
#該命令按照返回結果畫出紅框
In[8]:cv2.imshow(objImage)
#顯示標注臉部識別結果的圖片
讀者可以靈活運用以上命令,進一步拓展應用場景。例如,利用攝像頭實時捕捉人臉並檢測,同時還可以將檢測到的人臉,利用返回的紅框進行截圖保留,並使用這些圖片進行人臉識別。