本文采用OpenCV3和Python3 來實現靜態圖片的人臉識別,采用的是Haar文件級聯。
首先需要將OpenCV3源代碼中找到data文件夾下面的haarcascades文件夾里面包含了所有的OpenCV的人臉檢測的XML文件,這些文件可以用于檢測靜態,視頻文件,攝像頭視頻流中的人臉,找到haarcascades文件夾后,復制里面的XML文件,在你新建的Python腳本文件目錄里面建一個名為cascades的文件夾,并把復制的XML文件粘貼到新建的文件夾中一些有人臉的的圖片,這個大家可以自行百度。
創建一個識別人臉的函數detect()
def detect(img): #函數聲明了一個face_cascade的變量,該變量為CascadeClassifier的對象,用于檢測人臉(frontalface) face_cascade = cv2.CascadeClassifier('./cascades/haarcascade_frontalface_default.xml') #進行灰度化處理 gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY) #進行實際的人臉檢測,傳遞參數是scaleFactor和minNeighbor,分別表示人臉檢測過程中每次迭代時圖像的壓縮率和每個人臉矩形保留近鄰數目的最小值 faces = face_cascade.detectMultiScale(gray,1.3,5) for (x,y,w,h) in faces: #依次提取faces變量中的值來畫矩形 img = cv2.rectangle(img,(x,y),(x+w,y+h),(255,0,255),2) cv2.imshow('face_track',img) #避免圖形窗口關閉 cv2.waitKey(0)上面就是主要的函數,當然你也可以不用函數,直接寫在while循環里面,下面是完整的程序代碼
import cv2filename = cv2.imread('face_2.jpg')def detect(img): face_cascade = cv2.CascadeClassifier('./cascades/haarcascade_frontalface_default.xml') gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY) faces = face_cascade.detectMultiScale(gray,1.3,5) for (x,y,w,h) in faces: img = cv2.rectangle(img,(x,y),(x+w,y+h),(255,0,255),2) cv2.imshow('face_track',img) cv2.waitKey(0)if __name__ == "__main__": detect(filename)運行結果

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林站長站。
新聞熱點
疑難解答