端的にいうと、どういう環境か。†
Windowsの持つ、画面の拡大・縮小機能で「100%以外の倍率にしている」環境です。
Windows10だと、以下のような手順で設定できる場所。
- デスクトップを右クリック、メニューが開く。
→そこにある「ディスプレイ設定」選択、ウィンドウが開く。
→そこにある「拡大縮小とレイアウト」内「テキスト、アプリ、その他の項目のサイズを変更する」
ここ、初期値&推奨値は「100%」で、ROTRもこれを前提にしています。
違う値になっていると、ROTRがうまく認識を行えません。
なにが起きているか。†
問題は2つ。
- 変倍に起因する座標系のギャップ
- 「Windows/アプリが把握している」認識エリアの座標と。
「実際に画面表示されているイメージ画像座標」とがずれてしまっています。
その結果、「認識したい位置」をアプリが切り出せません。
- 例えば、倍率125%、切り出し座標を「100,100」と指定したとします。
アプリは自分の座標系を信じて「100,100」の位置を認識しようとするとするのですが。
上記100,100の位置にある画像は、変倍機能ゆえに実画面上は「125,125」に表示されています。
つまり、「認識したい位置」よりもだいぶ左上を認識しようとしているわけです。
- 文字自体の変倍
- 文字が拡大/縮小された結果、その「変倍された」文字を認識アルゴリズムが解釈できないケースがでています。
- Windows標準の windows.media.ocr で拾えるケースはいいのですが。
そうでない場合の「友瀬チューニング」がこの変倍を拾えていません。
利用者側回避策†
上記の拡大・縮小を行わない「100%」にする。
ROを使っている環境でこの機能を使っているということは、たぶん
「画面の解像度が大きすぎて、ROが小さく表示されている」状況でしょう。
そのため、上記「100%」にするのは困る、というのは理解できます。
ディスプレイドライバレベルでの解像度変更:
モニタが「1920幅」だったとしても、「1280幅」に指定するなどで対応するしかなさそうです。
開発側対応†
少なくとも、以下のような調査・開発が必要です。
- 上記の「拡大・縮小率」の取得方法の調査が必要。
- 取得した拡大・縮小率に基づく、認識座標系のコンバート処理を追加。
- 解像度に応じた、取得画像に対する認識処理のチューニング。
正直、対応する気はしていません:ぶっちゃけ、友瀬が現状困ってないので(^^;;
今の「友瀬自身もトレジャーハントで時間を使っている」状況では、なかなか。
とりあえず、あしからず、にて。
ご意見などがあれば。