OpenCV实现简单人脸检测
生活随笔
收集整理的這篇文章主要介紹了
OpenCV实现简单人脸检测
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
用OpenCV實現簡單的人臉識別,基于靜態圖像。
1、材料準備:找到OpenCV提供的人臉訓練模型文件。可以通過
https://github.com/opencv/opencv/tree/master/data/haarcascades
下載OpenCV源代碼文件,在其中opencv-master\data\haarcascades目錄下找到各種xml文件,全部復制出來,放在代碼同級目錄下新建的cascades文件夾中。如果是通過pip安裝的OpenCV,可以在python安裝路徑\Lib\site-packages\cv2\data下找到。
2、實現代碼:
from cv2 import cv2 #加載人臉訓練模型 face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml') face_cascade.load('C:/SOURCE/python/OpenCV/facedetect/cascades/haarcascade_frontalface_default.xml') #加載影像并轉為灰度圖 img = cv2.imread('C:/Users/admin/Desktop/test/face.png') gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY) #進行人臉檢測 faces = face_cascade.detectMultiScale(gray,1.2,5) #顯示檢測結果,用綠色方框圍繞識別到的人臉 for (x,y,w,h) in faces:img = cv2.rectangle(img,(x,y),(x+w,y+h),(0,255,0),2) cv2.namedWindow('faces detected!') cv2.imshow('faces detected!',img) #保存結果圖像 cv2.imwrite('C:/Users/admin/Desktop/test/facesdetect.png',img) cv2.waitKey() cv2.destroyAllWindows()3、測試
原圖:
運行結果:
4、分析。其中核心代碼 face_cascade.detectMultiScale(gray,1.2,1),第一個參數為輸入圖像(灰度圖);第二個參數為每次迭代的壓縮率,參數值要大于1.0,否則報錯,值越大,檢出人臉越少,可以根據實際檢測圖像進行調整;第三個參數為最小臨近值,取值大于等于0,即檢測到人臉后超過一定距離才會進行檢測。經過不同參數測試,圖像中人臉有部分始終無法檢測,也存在部分區域被錯誤識別為人臉,估計是受訓練模型的限制,如果用更多的人臉圖像進行訓練,結果精度應該會有所提高。
?
總結
以上是生活随笔為你收集整理的OpenCV实现简单人脸检测的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: OpenCV直线和圆形检测
- 下一篇: OpenCV实现视频人脸检测