BlinkObserverTool
概要
BlinkObserverTool は、ゲーム画面の瞬きをテンプレートマッチングや瞬き特徴認識などの画像認識で検出し、検出イベントに応じて指定ウィンドウへキー送信する観測補助ツールです。
| 項目 | 内容 |
|---|---|
| 目的 | 瞬き検出を人手観測の代わりに行い、対象ツールへ Shift などのキーを送る |
| 認識基盤 | GenericRecognition.Workbench.* NuGetパッケージ |
| 専用 GUI | 画像認識に必要な設定だけを絞った WPF 画面 |
| 設定保存 | 送信キー・対象プロセス/ウィンドウ・認識プロファイルを保存し、プルダウン選択可能 |
| 物理入力互換 | 7genBlinkSearch 向けに InputInterceptor ベースの送信方式を選択可能 |
| 検証モード | キー送信せず、瞬き検出ログと任意の通知音で実機との差分確認に使える |
| 配布 | installer\BlinkObserverTool.Installer で MSI 化可能(利用者向けインストーラー導入マニュアル) |
固定テンプレート瞬き認識の使い方
- 認識プロファイルを作成または読み込む
- 本体の 瞬き観測セットアップ を開く
- ROI 用画像を取得してプレビュー記録を開始し、観測する目をドラッグして囲む
- 一度瞬きした後、履歴スライダーまたは左右ボタンで開眼フレームへ巻き戻して 開眼採取する
- 閉眼フレームを選んで 閉眼採取し、品質検証、モデル反映を順に行う
- 自動認識設定を開くからプロファイルを保存する
固定テンプレート瞬き認識は、採取した開眼・閉眼画像を局所コントラスト正規化して
プロファイル内へ保存し、通常観測中は更新しません。両テンプレートとの正規化相関が
低い、または相関差が小さいフレームは Unknown としてイベントを抑止します。
遮蔽などから復帰した後は連続した開眼確認を経て再アームします。
blink-unknown / blink-reacquiring が多発する場合の調整方針は
固定テンプレート瞬き認識チューニング指針 を参照してください。
モデルにはテンプレート、入力・ROI・テンプレート寸法、前処理条件、判定閾値、 スキーマ版、SHA-256 ハッシュが含まれます。モデルの欠落・破損・未対応版、 入力寸法や ROI の不一致は自動再学習せず明示エラーになります。従来の 瞬き特徴認識は互換方式として残りますが、固定モデルへ移行する場合は 専用セットアップを実行してプロファイルを保存し直してください。通常の テンプレートマッチングも 自動認識設定から引き続き選択できます。
暗所動画で検証済みのプロファイル
次のプロファイルはアプリに同梱され、起動時に
%LOCALAPPDATA%\pokenae\BlinkObserverTool\Profiles へ同期されます。
アプリのプロファイル一覧を更新すると選択できます。
| 参照動画 | プロファイル | 認識方式 | 集約後の検出数 |
|---|---|---|---|
2026-09-21 08-52-45.mp4 | 暗所_2026-09-21_08-52-45_瞬き特徴 | 瞬き特徴認識 | 3 |
2026-09-21 08-59-52.mp4 | 暗所_2026-09-21_08-59-52_テンプレート | テンプレートマッチング | 3 |
対応する本体設定も同名で保存してあり、連続検出は 350 ms の範囲で集約します。
検証用動画はローカル専用ですが、配布に必要な既定プロファイル実体は
reference\verified-profiles に置き、Gitで追跡します。配布マニフェストは
BlinkObserverTool\DefaultProfiles\manifest.json にあります。新しい既定プロファイルは
自動追加され、更新版は前回配布時から一切編集されていない場合だけ反映されます。
利用者が作成・編集したプロファイル(ファイル追加を含む)は上書きされません。
同期状態は %LOCALAPPDATA%\pokenae\BlinkObserverTool\default-profiles-state.json に記録されます。
いずれも既存環境に合わせて
Camera 3、1280x720 を使用するため、入力デバイスが異なる場合はカメラ番号だけ変更してください。
セットアップ
GenericRecognition.Workbench.*0.1.16をGitHub Packagesから復元できるよう認証する。 ローカル開発では、同じ0.1.16を..\GenericRecognitionWorkbench\LocalPackagesへpackしてもよいdotnet restore .\BlinkObserverTool.slnxdotnet build .\BlinkObserverTool.slnx
インストーラー
インストーラーは installer\BlinkObserverTool.Installer にあります。プロジェクトの1回のビルドでアプリの publish と MSI 作成を行います。Debug ビルドはローカル用 0.0.0、Release ビルドは HEAD の単一 Git タグ vMAJOR.MINOR.PATCH をアプリと MSI のバージョンに使用します。Release は Git メタデータなし、タグなし、不正または複数のタグ、MSI の数値上限を超えるタグで失敗します。配布 MSI は現在未署名です。SHA-256 は改ざん検知に利用できますが、発行元の本人性は保証しません。
Visual Studio と CLI の手順は installer\README.md を参照してください。開発者および運用者向けの詳細な手順は 開発者・運用者向けリリース運用マニュアル を参照してください。一般利用者向けのインストール、更新、アンインストール、プロファイル保護、物理入力ドライバ導入などの手順は 利用者向けインストーラー導入マニュアル を参照してください。pokenae.com 掲載用の機能・配布情報は 製品紹介資料 にまとめています。
7genBlinkSearch 向けメモ
7genBlinkSearchは配布物の情報から Python + tkinter ベースで、pynput.keyboardを同梱している- そのため、通常の
SendInput注入より 物理入力寄りの送信 が必要な場合がある - BlinkObserverTool では 送信方式 として
物理入力(Interception)/物理入力(Interception長押し)を選択できる - これらを使う場合は、本体ウィンドウの 「物理入力ドライバ導入」 から
InputInterceptorドライバを導入する - 物理入力送信時も、設定した 対象プロセス/ウィンドウ解決 と 送信前前面化 を行ってから送信する
- 物理入力送信は押下残留対策として、送信前に同キーの解放を試行し、観測停止/本体エラー/終了時にも修飾キーの強制解放を行う
- さらに修飾キーを
押下のみで送る場合も、押下エッジ後に短時間で自動解放して OS 側の Shift 状態残留を防ぐ 物理入力(Interception)の通常送信はSimulateKeyPressを優先し、送信後に Interception 側でも修飾キー(Shift/Ctrl/Alt)解放を補正する- 送信前前面化が有効な場合、対象が既に前面なら再アクティブ化を行わず、前面化が発生したときのみ短い待機を入れてフォーカス遷移直後の取りこぼしを抑える
- 瞬きが短時間に複数回検出される場合は、同一瞬きとしてまとめる回数 と 瞬き集約時間(ms) を設定すると、1回目だけを送信して以降の重複検出を無視できる