如何使用OpenCV庫檢測圖像中的人臉
在本文中,將展示如何使用Python構建簡單的面部檢測器。建立一個可以檢測人臉的程序是一個很好的項目,可以開始使用計算機視覺。
從名稱可以理解,我們將編寫一個程序來檢測圖像中的面部。當我說「程序」時,您可以將其理解為教機器做什麼。我喜歡使用教學而不是編程,因為這實際上是我們正在做的事情。最好的學習方法是教學,因此在教機器如何識別人臉的同時,我們也在學習。在進入項目之前,講一講人臉檢測和人臉識別器之間的區別。
人臉檢測與人臉識別
這兩件事聽起來很相似,但實際上它們並不相同。讓我們理解它們之間的區別,以便我們不會錯過重點。人臉檢測是從圖像或視頻中檢測人臉的過程,無關緊要。該程序除了發現面孔外沒有做任何其他事情。但是,另一方面,人臉識別程序會找到人臉,並且還能分辨出誰屬於誰。因此,它不僅僅是提供檢測信息。有更多的編程,換句話說,就是更多的教學。
假設您正在觀看街道,汽車正在駛過。人臉檢測就像告訴路過的物體是一輛汽車。而面部識別器就像是能夠分辨路過的汽車的模型。這是一個很好的圖像,顯示了實際的差異。
我們將為此項目使用一個模塊庫,稱為OpenCV。OpenCV是高度優化的庫,專注於實時應用程式。
OpenCV(開源計算機視覺庫)是一個開源計算機視覺和機器學習軟體庫。OpenCV的構建旨在為計算機視覺應用程式提供通用的基礎結構,並加速在商業產品中使用機器感知。作為BSD許可的產品,OpenCV使企業可以輕鬆地使用和修改代碼。
安裝軟體包。
pip install opencv-python
安裝完成後,我們可以將其導入到我們的程序中。
import cv2
OpenCV已經包含許多針對面部,眼睛,微笑等的經過預先訓練的分類器。這些XML文件存儲在文件夾中。我們將使用面部檢測模型。
這是面部檢測的連結:https : //raw.githubusercontent.com/opencv/opencv/master/data/haarcascades/haarcascade_frontalface_default.xml
如果您有帳戶,則可以從Github下載XML文件。如果不這樣做,請隨時從下面的連結複製代碼,並將其粘貼到文本文檔中,並將其另存為「 face_detector.xml」。
將文件保存到當前文件夾後,讓我們將其加載到程序中。
# Load the cascade
face_cascade = cv2.CascadeClassifier('face_detector.xml')
導入圖片
在此步驟中,您將選擇要在其上測試代碼的圖像。確保圖像中至少有一張臉,以便我們的程序可以找到一張。這是一個人的示例圖像。
選擇圖像後,讓我們在程序中對其進行定義。確保圖像文件位於您正在使用的文件夾中。
#讀取輸入圖像
img = cv2.imread('test.jpg')
人臉檢測
感謝為OpenCV做出的貢獻。這是檢測圖像中人臉的代碼:
#檢測人臉
face = face_cascade.detectMultiScale(img,1.1,4)
我們在代碼前面定義了face_cascade。檢測到面部之後,我們將在其周圍繪製矩形,以便我們知道機器看到的內容。機器可能會犯錯誤,但是我們的目標應該是教導最佳和最優化的方法,以使預測更加準確。
使用以下代碼可以在檢測到的面部周圍繪製矩形:
# Draw rectangle around the faces
for (x, y, w, h) in faces:
cv2.rectangle(img, (x, y), (x+w, y+h), (255, 0, 0), 2)
(255,0,0)是我們要繪製的矩形的顏色。您可以使用它並更改顏色。(2)視線的粗細。您可以更改值並查看其外觀。結果
這是最後一步,現在我們將結果導出為圖像文件。此圖像將顯示人臉檢測的結果。要保存新的圖像文件,我們將使用cv2庫中的一種名為「 imwrite」的方法。保存完成後,您將在終端中看到「成功保存」。
# Exporttheresult
cv2.imwrite("face_detected.png", img)
print('Successfully saved')
現在,就已經創建了一個檢測圖像中人臉的程序。感謝閱讀!