概要
Webカメラに映る自分の顔の上に表示される球体を使った、反応速度ゲーム。
球体が赤から緑に変わった瞬間にどれだけ速く瞬きできるかを計測し、その反応時間を“年齢”に変換して表示する。
速ければ若く、遅ければ年上に判定されるという遊び心のある仕組みで、来場者が気軽に楽しめる体験型展示として制作した。
展示ポスター — 球体が緑に変わった瞬間に瞬き。タイム・年齢の測定と、本日のランキングTOP10を表示。
遊び方
- 1.Enterを押すとスタート。顔の上に赤い球体が表示される。
- 2.3〜6秒のランダムな待ち時間ののち、球体が緑に変わる(先読み・フライングを防ぐためランダム化)。
- 3.緑に変わった瞬間に瞬きすると、その反応時間(秒)が記録される。
- 4.1人3回チャレンジし、ベストタイム(最速)をその人のスコアとして本日のランキングTOP10に掲載。
主な技術・手法
- 瞬き検出:MediaPipe の顔メッシュ(cvzone FaceMeshDetector)で目の上下・左右のランドマークを取得し、縦横比(EAR: Eye Aspect Ratio)を算出。比率が閾値を下回った瞬間を「瞬き」として検出。
- 誤検出対策:直近3フレームの比率を移動平均し、瞬き判定後は数フレームのクールダウンを設けてチャタリング(多重カウント)を防止。
- 反応時間の計測:球体が緑に変わってから瞬きが検出されるまでの経過時間を計測し、スコア化。
- 年齢判定:反応時間(ミリ秒)を区分テーブルに対応させ“年齢”へ変換。0.1秒未満は身体的に不可能として除外(“Not a person!!”等のユーモア表示)。
- UI・映像:OpenCVでWebカメラ映像をフルスクリーン・ミラー表示し、cvzoneでスコア・ランキング・操作ガイドをリアルタイムにオーバーレイ。
- 演出:pygame / playsound による効果音・BGM再生。
- ランキング:バブルソート+重複除去でその日の上位タイムを集計・表示。
- 実装:Python / MediaPipe / OpenCV / cvzone / NumPy / pygame
展示・チーム
大学の学園祭(北山祭・2023年)にて、来場者参加型のインタラクティブ展示として出展。2名チームで企画・開発を担当した。