Day09 面部偵測 Face Detection
🟡 先看看程式的效果
今天這個程式碼範例展示了如何使用 OpenCV 和 MediaPipe 來進行即時面部偵測。程式首先透過攝影機捕捉即時影像, 並會偵測影像中的面部,並使用 MediaPipe 的繪圖工具在影像上標示出偵測到的面部位置。
Today’s program uses OpenCV and MediaPipe for real-time hand detection and keypoint drawing. It serves as a basic model for hand detection programs. Over the next few days, various features will be gradually added to this program.
🟡 學習目標
使用 MediaPipe 進行面部偵測,理解如何初始化和使用其模組來偵測面部特徵。
🟡 程式碼
請先下載 “Face Detection 面部偵測.py”
請按此下載
'''
Python + AI in 21 days
https://jasonworkshop.com/python
Designed by Jason Workshop
[請勿修改以上內容]
---
預備工作:
首先,請確保已安裝 opencv-python, mediapipe 模組
如不確定可直接在 Windows 的 cmd prompt 執行以下指定
pip install opencv-python mediapipe
'''
import cv2
import mediapipe as mp
# 初始化 MediaPipe Face Detection 模組
mp_face_detection = mp.solutions.face_detection
face_detection = mp_face_detection.FaceDetection(min_detection_confidence=0.5) # min_detection_confidence 為最低可信度
mp_drawing = mp.solutions.drawing_utils
# 開啟攝影機
cap = cv2.VideoCapture(0)
while cap.isOpened():
ret, frame = cap.read()
if not ret:
break
# 轉換 BGR 圖像到 RGB
rgb_frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
# 偵測面部
result = face_detection.process(rgb_frame)
# 繪製面部位置
if result.detections:
for detection in result.detections:
mp_drawing.draw_detection(
frame,
detection,
keypoint_drawing_spec=mp_drawing.DrawingSpec(color=(0, 255, 0), thickness=2, circle_radius=2),
bbox_drawing_spec=mp_drawing.DrawingSpec(color=(255, 255, 255), thickness=1))
# 顯示圖像
cv2.imshow('Face Detection', frame)
if cv2.waitKey(1) & 0xFF == 27: # 按下 ESC 鍵退出
break
# 釋放攝影機並關閉所有視窗
cap.release()
cv2.destroyAllWindows()
🟡 小小挑戰一下
大家可以嘗試進行一些修改或改良喔! 例如:
✌️嘗試調節程式對面部偵測變得較為寬鬆或嚴緊吧。
😁 明天見!