close
使用 OpenCV 進行臉部檢測的 Python 程式解析
本文展示如何使用 OpenCV 的 Haar 紋波檢測器進行臉部檢測,並在檢測到的臉部區域繪製綠色矩形框。
程式碼範例與註解
# 匯入 OpenCV 模組
import cv2
# 加載 Haar 紋波檢測器
face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_alt2.xml')
# 讀取圖片並轉換為灰階
image = cv2.imread('demo.jpeg')
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
# 檢測臉部
# 第一個參數是灰階圖像,第二個參數是縮放因子(每次檢測時圖像尺寸縮小的比例),第三個參數是最小鄰近數
faces = face_cascade.detectMultiScale(gray, 1.05, 20)
# 遍歷所有檢測到的臉部區域,並繪製綠色矩形框
for (x, y, w, h) in faces:
image = cv2.rectangle(image, (x, y), (x + w, y + h), (0, 255, 0), 3)
# 創建可調整大小的視窗,並顯示結果
cv2.namedWindow('video', cv2.WINDOW_NORMAL)
cv2.imshow('video', image)
# 等待用戶按下任意鍵關閉視窗
cv2.waitKey(0)
cv2.destroyAllWindows()
程式解析
- 加載 Haar 紋波檢測器:
cv2.CascadeClassifier
加載了 OpenCV 提供的預訓練模型,適用於臉部檢測。 - 讀取圖片與轉換灰階: 使用
cv2.imread
加載圖片,並使用cv2.cvtColor
將其轉換為灰階圖像,因為 Haar 檢測器僅接受灰階輸入。 - 臉部檢測:
detectMultiScale
是主要的臉部檢測函數,其參數解釋如下:gray
:灰階圖像。1.05
:縮放因子,值越小檢測越精細但速度變慢。20
:最小鄰近數,用於濾除錯誤檢測。
- 繪製矩形框: 對於檢測到的每個臉部區域,使用
cv2.rectangle
繪製綠色矩形框,參數指定了矩形的位置、顏色和線條厚度。 - 顯示結果:
cv2.namedWindow
創建了一個可調整大小的視窗,cv2.imshow
用於顯示圖像。 - 鍵盤事件:
cv2.waitKey(0)
等待用戶按鍵後關閉視窗,釋放資源。
結論
該程式展示了如何使用 OpenCV 的 Haar 紋波檢測器進行臉部檢測,並通過直觀的矩形框顯示檢測結果。用戶可以進一步調整檢測參數以提高準確性或處理不同場景的圖像。
全站熱搜