人臉識別是指通過計算機對人臉圖像進行分析,識別出人臉上的一些信息,如人臉的位置、大小、姿態、形狀、以及其中的眼睛、鼻子、嘴巴等細節,對身份的識別具有重要的應用價值。
一、準備工作
在開始我們的人臉識別程序之前,需要完成以下準備工作:
1、下載安裝OpenCV庫
在Python中實現人臉識別需要使用到的庫是OpenCV。在終端輸入如下命令,即可完成OpenCV的下載安裝:
pip install opencv-python
2、下載人臉識別模型文件
在進行人臉識別時,需要用到Haar級聯分類器,該分類器是基於機器學習的目標檢測算法。我們可以使用OpenCV官方提供的人臉識別模型文件,其下載鏈接如下:
https://github.com/opencv/opencv/tree/master/data/haarcascades
下載完成後,將文件保存到項目根目錄下。
二、代碼實現
接下來,我們來結合代碼實現人臉識別。代碼如下:
import cv2
# 加載分類器
face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
# 加載圖片
img = cv2.imread('test.jpg')
# 轉換為黑白圖片
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# 檢測人臉
faces = face_cascade.detectMultiScale(gray, 1.3, 5)
# 繪製矩形框
for (x,y,w,h) in faces:
cv2.rectangle(img,(x,y),(x+w,y+h),(255,0,0),2)
# 顯示圖片
cv2.imshow('img',img)
cv2.waitKey()
該代碼實現了對指定圖片進行人臉識別,並在識別到人臉的位置上繪製了一個矩形框。
三、代碼解析
在代碼實現中,我們主要需要了解以下幾個部分:
1、加載人臉識別模型文件
我們通過如下代碼,加載了OpenCV官方提供的haar級聯分類器文件,該文件已經包含了訓練好的人臉識別模型:
face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
2、讀取圖片文件
我們通過如下代碼,讀取指定的圖片文件:
img = cv2.imread('test.jpg')
3、將圖片轉換為黑白圖片
為了方便後續對人臉進行檢測,我們需要將讀取到的圖片轉換為黑白圖片。通過下面代碼,即可完成圖片的轉換:
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
4、檢測人臉
我們通過如下代碼,調用haar級聯分類器對圖片中的人臉進行檢測,得到人臉的位置和大小信息:
faces = face_cascade.detectMultiScale(gray, 1.3, 5)
其中,detectMultiScale()函數的第一個參數是待檢測圖片的灰度,第二個參數是表示每次圖片大小減小的比例,第三個參數是每一個目標至少被檢測到5次才會被認為是真的目標。
5、繪製矩形框
最後,我們通過如下代碼,在圖片中識別到的人臉位置上繪製一個藍色矩形框:
for (x,y,w,h) in faces:
cv2.rectangle(img,(x,y),(x+w,y+h),(255,0,0),2)
其中,(x,y)是矩形框左上角的坐標,w和h是矩形框的寬和高。
四、代碼運行
在代碼完成後,我們需要將代碼存儲為.py文件,並確保圖片文件和haar級聯分類器文件位於同一目錄下。在終端中進入到該文件所在目錄,運行命令:
python face_detection.py
即可運行Python人臉識別程序並查看結果。
五、總結
通過這個Python項目案例,我們學習了如何使用OpenCV庫對圖片中的人臉進行識別,得到人臉的位置和大小信息,並在圖片中繪製人臉所在的矩形框。這個項目並不複雜,但是很好地演示了OpenCV庫的基本使用方法,適合初學者學習。
原創文章,作者:ZQMNE,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/373504.html