Thanks to visit codestin.com
Credit goes to Github.com

Skip to content

hirossan4049/tom

Repository files navigation

tom

手指トラッキングによるドア開錠システム / Hand Tracking Door Unlock System

概要 / Overview

カメラ映像から手指をトラッキングし、人差し指の円運動を検出してドアの開錠トリガを発火させるシステムです。

A system that tracks hand gestures from camera footage, detects circular motion of the index finger, and triggers a door unlock mechanism.

特徴 / Features

  • 🎥 Webカメラとその他カメラ(RTSP等)に対応 / Supports webcam and RTSP cameras
  • ✋ MediaPipeによる高精度な手指トラッキング / High-precision hand tracking using MediaPipe
  • 🔄 円運動検出アルゴリズム / Circular motion detection algorithm
  • 🔓 カスタマイズ可能な開錠トリガ / Customizable unlock trigger
  • 🐍 Python + uv による環境管理 / Python environment management with uv

必要要件 / Requirements

  • Python 3.10以上
  • uv (Python package manager)
  • Webカメラまたはカメラへアクセス可能な環境

インストール / Installation

1. uvのインストール

curl -LsSf https://astral.sh/uv/install.sh | sh

2. プロジェクトのセットアップ

# リポジトリをクローン
git clone https://github.com/hirossan4049/tom.git
cd tom

# uvを使用する場合
uv pip install -e .

# または pip を使用する場合
pip install -r requirements.txt

使用方法 / Usage

Webカメラを使用する場合

python tom.py

または

python tom.py --camera 0

RTSPカメラを使用する場合

python tom.py --camera "rtsp://username:password@ip_address:port/stream"

使い方の手順

  1. プログラムを起動すると、カメラ映像が表示されます
  2. 手をカメラに向けて、人差し指を立てます
  3. 人差し指の先端で円を描くように動かします
  4. 円運動が検出されると「UNLOCKED!」と表示され、開錠トリガが発火します
  5. 'q'キーを押すと終了します

カスタマイズ / Customization

開錠動作のカスタマイズ

tom.pyをインポートして、独自の開錠ロジックを実装できます:

from tom import DoorUnlockSystem

def my_unlock_function():
    # ここに実際のドア開錠ロジックを実装
    print("ドアを開錠します")
    # 例: GPIO制御、API呼び出し、など

system = DoorUnlockSystem(
    camera_source="0",
    unlock_callback=my_unlock_function
)
system.run()

検出パラメータの調整

CircularMotionDetectorのパラメータを調整できます:

from tom import CircularMotionDetector, HandTracker, DoorUnlockSystem

# カスタムパラメータで初期化
detector = CircularMotionDetector(
    buffer_size=40,      # トラッキングするポイント数
    min_radius=30,       # 最小半径(ピクセル)
    max_radius=250       # 最大半径(ピクセル)
)

技術仕様 / Technical Specifications

アーキテクチャ

カメラ映像入力
    ↓
MediaPipe手指トラッキング
    ↓
人差し指先端座標取得
    ↓
円運動検出アルゴリズム
    ↓
開錠トリガ発火

主要コンポーネント

  • HandTracker: MediaPipeを使用した手指トラッキング
  • CircularMotionDetector: 座標履歴から円運動を検出
  • DoorUnlockSystem: メインシステム統合

円運動検出アルゴリズム

  1. 人差し指先端の座標を時系列で保存
  2. 座標群の重心を計算
  3. 各座標と重心との距離を計算し、円の半径を推定
  4. 距離の標準偏差が小さい(円形に近い)ことを確認
  5. 角度変化を計算し、270度以上の回転を検出
  6. すべての条件を満たした場合、円運動として認識

ライセンス / License

MIT

開発 / Development

コードスタイル

  • インデントはタブ(2スペース相当)を使用
  • タイプヒントを使用
  • Docstringを記述

貢献 / Contributing

プルリクエストを歓迎します!

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •  

Languages