1. 程式人生 > >Python3+OpenCV人臉識別

Python3+OpenCV人臉識別

一、安裝
1.開啟命令列,輸入pip install numpy,安裝numpy。
2.安裝opencv。
開啟http://www.lfd.uci.edu/~gohlke/pythonlibs/,找到與你電腦python版本對應的版本進行下載。
python版本可以在命令列中輸入python進行查詢。
下載後把檔案安裝到python目錄下的Lib\site-packages就可以了。
二、實現
(1)獲取人臉識別訓練資料
CascadeClassifier,是Opencv中做人臉檢測的時候的一個級聯分類器。

face_cascade=cv2.CascadeClassifier("訓練資料"
)

訓練資料地址:訓練資料
(2)讀取圖片

image = cv2.imread("待識別的圖片路徑") 

(3)灰度轉換
cv2.cvtColor(input_image, flag)函式實現圖片顏色空間的轉換,flag 引數決定變換型別。

gray = cv2.cvtColor(image,cv2.COLOR_BGR2GRAY)

(4)探測人臉
detectMultiScale()是完成實際人臉識別工作的函式。
引數說明:
grey:要識別的影象資料。
scaleFactor:表示在前後兩次相繼的掃描中,搜尋視窗的比例係數。預設為1.1即每次搜尋視窗依次擴大10%。
minNeighbors:表示構成檢測目標的相鄰矩形的最小個數。
minSize和maxSize用來限制得到的目標區域的範圍。
(5)畫矩形(當然,你也可以使用circle函式畫圓形)
cv2.rectangle(img, pt1, pt2, color[, thickness[, lineType[, shift]]])
五個引數,圖片名稱、兩個對角點座標、顏色陣列、線寬。
(6)顯示圖片
cv2.imshow(‘image’,img)
前一個引數是視窗的名字,要用字串。
(7)視窗保留
cv2.waitKey()是一個鍵盤繫結功能。當引數為0時,視窗將保留直到任意鍵按下。

例項

圖片素材
這裡寫圖片描述
原始碼

import cv2
face_cascade=cv2.CascadeClassifier("G://Sublime Text 3/frontalface/data/haarcascades/haarcascade_frontalface_default.xml")
image = cv2.imread("F:\\gakki.jpeg")           #讀取圖片
gray = cv2.cvtColor(image,cv2.COLOR_BGR2GRAY)  #灰度轉換
faces = face_cascade.detectMultiScale(         #探測人臉
gray, scaleFactor = 1.15, minNeighbors = 5, minSize = (5,5), ) print("發現{0}個人臉!".format(len(faces))) for(x,y,w,h) in faces: cv2.rectangle(image,(x,y),(x+w,y+h),(0,255,0),2) cv2.imshow("Gakki!",image) #顯示影象 cv2.waitKey(0)

結果
發現1個人臉!
這裡寫圖片描述