This project is an advanced implementation that allows controlling the mouse cursor using hand gestures captured through a webcam. It utilizes computer vision and hand tracking technologies to translate hand movements and gestures into cursor movements and mouse clicks.
- Hand Tracking: Leverages MediaPipe for real-time hand tracking.
- Cursor Movement: Maps the index finger's movement to the mouse cursor.
- Click Detection: Detects a click action when the thumb and index finger tips are close together.
- Moving Average Filter: Applies a moving average filter to smooth the cursor's movement.
- Python 3.6 or later
- OpenCV (
cv2
): For capturing video input from the webcam and displaying the output. - MediaPipe (
mediapipe
): For hand tracking. - NumPy (
numpy
): For numerical operations. - PyAutoGUI (
pyautogui
): For controlling the mouse cursor.
To install the required libraries, run:
pip install opencv-python mediapipe numpy pyautogui
To start the hand tracking mouse controller, run:
python hand_tracking_mouse_controller.py
Ensure your webcam is accessible and not being used by another application.
- Initialization: Sets up hand tracking with MediaPipe and retrieves screen resolution using PyAutoGUI.
- Video Capture: Continuously captures video frames from the webcam.
- Hand Detection: Each frame is processed to detect the hand and identify landmarks such as the thumb tip and index finger tip.
- Cursor Movement: Calculates the position of the index finger tip and applies a moving average filter to smooth the movement. The cursor's screen position is scaled based on the detected position.
- Click Detection: Determines if a click action should be performed based on the distance between the thumb tip and index finger tip.
- Action Execution: Moves the mouse cursor and performs click actions accordingly.
- Cursor Sensitivity: Adjust the mapping between hand movement and cursor movement by modifying the scaling factors.
- Click Sensitivity: Change the distance threshold for click detection to suit your preference.
Press q
while the output window is focused to safely close the application.
Index_finger_detection_only.py is an implementation that does not actually operate the mouse cursor, but only displays the index finger position and click detection on the Window.
This project is open source and available under the MIT License.
このプロジェクトは、ウェブカメラを通じてキャプチャされた手のジェスチャーを使用してマウスカーソルを制御するための実装です。コンピュータビジョンと手のトラッキング技術を活用して、手の動きとジェスチャーをカーソルの動きとマウスクリックに変換します。
- 手のトラッキング: MediaPipeを利用したリアルタイムの手のトラッキング。
- カーソルの動き: 人差し指の動きをマウスカーソルにマッピング。
- クリック検出: 親指と人差し指の先が近づいたときにクリックアクションを検出。
- 移動平均フィルタ: カーソルの動きを滑らかにするための移動平均フィルタを適用。
- Python 3.6以降
- OpenCV (
cv2
): ウェブカメラからのビデオ入力をキャプチャし、出力を表示するため。 - MediaPipe (
mediapipe
): 手のトラッキングのため。 - NumPy (
numpy
): 数値演算のため。 - PyAutoGUI (
pyautogui
): マウスカーソルを制御するため。
必要なライブラリをインストールするには、以下を実行してください:
pip install opencv-python mediapipe numpy pyautogui
手のトラッキングマウスコントローラーを起動するには、以下を実行してください:
python hand_tracking_mouse_controller.py
ウェブカメラがアクセス可能であり、他のアプリケーションに使用されていないことを確認してください。
- 初期化: MediaPipeで手のトラッキングを設定し、PyAutoGUIを使用して画面解像度を取得。
- ビデオキャプチャ: ウェブカメラからビデオフレームを連続してキャプチャ。
- 手の検出: 各フレームを処理して手を検出し、親指の先や人差し指の先などのランドマークを識別。
- カーソルの動き: 人差し指の先の位置を計算し、移動を滑らかにするために移動平均フィルタを適用。検出された位置に基づいてカーソルの画面位置をスケーリング。
- クリック検出: 親指の先と人差し指の先の距離に基づいて、クリックアクションを実行するかどうかを決定。
- アクション実行: マウスカーソルを移動させ、必要に応じてクリックアクションを実行。
- カーソルの感度: 手の動きとカーソルの動きのマッピングを調整するために、スケーリングファクターを変更します。
- クリックの感度: クリック検出のための距離閾値を、好みに合わせて変更します。
出力ウィンドウがフォーカスされている状態で q
を押すと、アプリケーションを安全に閉じることができます。
Index_finger_detection_only.pyは、実際にマウスカーソルを操作するのではなく、人差し指の位置とクリックの検出をWindow上に表示するだけの実装です。
このプロジェクトはオープンソースであり、MITライセンスの下で利用可能です。