此專案展示了使用攝像頭、OpenCV 和 MediaPipe Hands 進行即時手勢辨識。用戶可以執行特定手勢來觸發預定的“咒語”,例如使用單手或雙手畫圓或水平線。
- 咒語一:用單根手指畫圓。
- 咒語二:用單根手指畫水平線。
- 咒語三:雙手同時畫圓。
每個手勢在即時被辨識後,會在畫面上顯示回饋。
請確保已安裝以下工具與套件:
- Python 3.7~3.10 (我是用3.10.5啦)
- OpenCV
- MediaPipe
- NumPy
執行以下命令以安裝所需的 Python 套件:
pip install opencv-python mediapipe numpy- 將此專案倉庫克隆或下載到本地。
- 在專案目錄中打開終端機。
- 執行以下命令啟動程式:
python gesture_recognition.py
- 攝像頭的視訊畫面將在新視窗中打開。
- 按照畫面上的提示執行手勢。
- 按
q鍵退出程式。
-
圓形偵測:
- 跟蹤食指尖的軌跡。
- 根據半徑變化、一致性、起點與終點的接近度,以及路徑長度計算圓形度量。
- 閾值判斷軌跡是否為圓形。
-
水平線偵測:
- 跟蹤食指尖的軌跡。
- 檢查起點和終點的水平距離。
- 確保垂直偏移最小。
-
雙手圓形偵測:
- 同時跟蹤雙手的軌跡。
- 分別對雙手的軌跡進行圓形度量分析。
為防止同一手勢在短時間內被重複偵測,程式設置了冷卻計時器,確保用戶體驗更加順暢。
- 圓形偵測靈敏度:調整
calculate_circularity函數中的閾值。 - 水平線靈敏度:修改
check_horizontal_line函數中的距離與偏移檢查條件。 - 冷卻時間:更改
COOLDOWN_FRAMES常數以縮短或延長冷卻時間。
- 手勢辨識可能會受到光線條件或手部相對於攝像頭位置的影響。
- 若手部移動過快或不穩定,準確度可能下降。