Haar 分類器是一種用于對象檢測的方法,最常見的應用之一是面部檢測。Haar 分類器基于Haar-like 特征,這些特征可以通過計算圖像中的積分圖來高效地計算。
在OpenCV中,Haar 分類器被廣泛用于面部檢測。以下是一個簡單的使用OpenCV進行面部檢測的示例:
import cv2# 加載面部檢測的預訓練分類器
face_cascade = cv2.CascadeClassifier(cv2.data.haarcascades + 'haarcascade_frontalface_default.xml')# 讀取圖像
image = cv2.imread(r"C:\Users\mzd\Desktop\opencv\images.jpg")# 將圖像轉換為灰度
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)# 在圖像中檢測面部
faces = face_cascade.detectMultiScale(gray, scaleFactor=1.3, minNeighbors=5)# 在檢測到的面部周圍繪制矩形
for (x, y, w, h) in faces:cv2.rectangle(image, (x, y), (x+w, y+h), (255, 0, 0), 2)# 顯示結果圖像
cv2.imshow('Face Detection', image)
cv2.waitKey(0)
cv2.destroyAllWindows()
在這個示例中,我們首先加載了面部檢測的預訓練分類器 haarcascade_frontalface_default.xml
。接下來,讀取了一張圖像,并將其轉換為灰度圖像。然后,使用 detectMultiScale
函數來檢測圖像中的面部。最后,通過在檢測到的面部周圍繪制矩形來可視化檢測結果。
detectMultiScale
函數的參數包括:
gray
:灰度圖像scaleFactor
:用于在不同尺度上搜索面部的比例因子minNeighbors
:確定檢測到的對象之間的最小數量(越大越穩定,但可能漏掉一些目標)- 其他可選參數,如
minSize
和maxSize
,用于指定檢測對象的最小和最大尺寸
在實際應用中,你可以使用不同的分類器文件,例如 haarcascade_frontalface_alt.xml
,根據實際需求調整參數以及嘗試使用其他預訓練模型進行不同的對象檢測任務。