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 紋波檢測器進行臉部檢測,並通過直觀的矩形框顯示檢測結果。用戶可以進一步調整檢測參數以提高準確性或處理不同場景的圖像。

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 liusming 的頭像
    liusming

    劉老師的跨域創想工坊

    liusming 發表在 痞客邦 留言(0) 人氣()