iT邦幫忙

2025 iThome 鐵人賽

DAY 29
0
佛心分享-IT 人自學之術

OpwnCV影像處理新手村系列 第 29

🚀 DAY 29:人臉偵測與辨識(Face Detection & Recognition)

  • 分享至 

  • xImage
  •  

在人機互動、安防、社群媒體等領域,人臉偵測(Face Detection)人臉辨識(Face Recognition) 是電腦視覺非常重要的技術,廣泛應用於手機解鎖、門禁系統、監控、社群媒體自動標記等場景。

本章重點:

  1. 使用 Haar Cascade 進行人臉偵測
  2. 初步了解 人臉辨識(Face Recognition)的基本流程

目錄

  1. Haar Cascade 人臉偵測原理
  2. 測試圖片與 XML 檔案準備
  3. 人臉與眼睛偵測範例程式
  4. 參數說明與結果展示

1. Haar Cascade 人臉偵測原理

OpenCV 內建 Haar Cascade 分類器,可用於快速偵測人臉、眼睛等特徵。
其原理是利用多層級的特徵篩選,快速排除非人臉區域,適合即時應用。

補充說明:
若是用 conda 安裝 OpenCV,可能沒有內建 cv2.data.haarcascades,需至 GitHub 下載 XML 檔案:
👉 Haarcascades XML


2. 測試圖片與 XML 檔案準備

請準備一張包含人臉的圖片,例如 face_sample.jpg,並確認 Haar Cascade 的 XML 檔案路徑正確。

import cv2


# 指定本地的 XML 檔案路徑
face_cascade = cv2.CascadeClassifier(r"E:\haarcascade_frontalface_default.xml")
eye_cascade = cv2.CascadeClassifier(r"E:\haarcascade_eye.xml")

print("Face cascade loaded:", not face_cascade.empty())
print("Eye cascade loaded:", not eye_cascade.empty())


# 讀取影像並轉灰階
img = cv2.imread("face_sample.jpg")
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
cv2.imshow("Original", img)

# 將以下程式碼放在所有顯示語句的最後面
cv2.waitKey()
cv2.destroyAllWindows()

說明:
請確認 XML 檔案已正確載入,否則無法進行偵測。

https://ithelp.ithome.com.tw/upload/images/20251001/20129482HpheeGD7JL.png


3. 人臉與眼睛偵測範例程式

# 偵測人臉
faces = face_cascade.detectMultiScale(gray, scaleFactor=1.1, minNeighbors=5)

# 畫出人臉框
for (x, y, w, h) in faces:
    cv2.rectangle(img, (x, y), (x+w, y+h), (255, 0, 0), 2)
    
    # 偵測眼睛
    roi_gray = gray[y:y+h, x:x+w]
    roi_color = img[y:y+h, x:x+w]
    eyes = eye_cascade.detectMultiScale(roi_gray)
    for (ex, ey, ew, eh) in eyes:
        cv2.rectangle(roi_color, (ex, ey), (ex+ew, ey+eh), (0, 255, 0), 2)

# 顯示結果
cv2.imshow("Face Detection", img)
cv2.waitKey()
cv2.destroyAllWindows()

4. 參數說明與結果展示

  • scaleFactor:每次影像縮小的比例,數值越小檢測越細緻但速度較慢,常設為 1.1~1.3。
  • minNeighbors:檢測框必須至少被多少次檢測到才算有效,數值越高可減少誤檢測但可能漏檢。

結果展示:
偵測到的人臉以藍色框標示,眼睛以綠色框標示。

https://ithelp.ithome.com.tw/upload/images/20251001/20129482H7Tg5I4D3V.png

補充說明:

  • Haar Cascade 適合快速偵測,但在複雜環境下準確度有限。
  • 若需更高準確度,可考慮使用深度學習模型(如 MTCNN、FaceNet 等)。

🎯 今日結語

本章介紹了如何使用 Haar Cascade 進行人臉與眼睛偵測,並說明了主要參數與方法比較。
Haar Cascade 方法快速且輕量,適合即時應用,但在複雜場景下建議搭配深度學習模型以提升準確度。


上一篇
🚀 DAY 28:模板匹配(Template Matching)
下一篇
🚀 DAY 30:車牌偵測與辨識(License Plate Detection & Recognition)
系列文
OpwnCV影像處理新手村30
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言