アプリビレッジ

おすすめのゲーム・スマホアプリの情報やストーリーなどの濃い話(ネタバレ含む)、面白い口コミまでもひっそりと公開中!

【UWSC】マクロで画像がうまく認識できない場合の対処方法【あいまい検索】

公開:2021年10月11日 (最終更新:2022年01月26日)

画像認識って一度うまくいっても、次は認識してくれない場合もあるわ。使う度に設定し直さないとダメなの?

という悩みを解決します。

UWSCの画像検索は便利なんですが、1ピクセルでも違うと認識してくれません。そのため、背景が動いていたり、モヤがかかっていたりすると失敗してしまいます。

有能すぎるが故に、融通が利かない状態になってしまうのです。そんな状況に対応するために、UWSCの作者ではありませんが、「Nekorabbitさん」という方が拡張プラグインを開発してくれました。

今回はそのプラグインを4つの項目に分けて紹介します。

  1. あいまい検索「chkimgx」のダウンロード
  2. chkimgxの導入と初期設定
  3. chkimgxの使い方
  4. chkimgxのオプションを紹介

今回のプラグインを導入すれば、モンストなどのイレギュラーの多いマルチプレイのゲームでも、安心してマクロ放置ができるようになります。かなり便利ですので、ぜひ覚えていってくださいね!

あいまい検索「chkimgx」のダウンロード

UWSCで画像のあいまい検索を行うのに必要なプラグイン「chkimgx」は開発者であるNekorabbitさんのホームページ「Classic RPA」から、手に入れましょう。

ページへアクセス後、ダウンロードリンクはページの下の方にあります。

※使用するためにはNet Framework4.5も必要です。microsoftの公式サイトへのリンク先を張っておきますので、うまく動かないときはNet Framework4.5を導入してください。

では、ダウンロードした、ChkImgX-ver1.2.1.zipを解凍します。

今回使用するファイルは「ChkImgX.dll」「ChkImgX.uws」「NekoAddon.dll」の3つです。これを自分のマクロ「UWS」ファイルがあるフォルダーにコピーしてください。

残りのファイルはキャプチャーするファイルのようですが、使ったことないので割愛します。必要なければ削除で構いません。さて、これであいまい検索を行う準備ができました!

chkimgxの導入と初期設定

UWSCのマクロファイルがあるフォルダに「ChkImgX.dll」「ChkImgX.uws」「NekoAddon.dll」の3つファイルをコピーしたら、今度はUWSのファイルを編集します。

おそらく1行目にある「ACW」の下に、以下を入力してください。

//ChkImgX関数をインクルード
CALL ChkImgX.uws

この一文を入れておくと、プラグインを読み込んでくれます。新しいマクロを別フォルダで作る際にも、3つのファイルのコピーと上記のプログラムの追加が必要になりますので、覚えておいてくださいね。

それではいよいよ、画像のあいまい検索の実行です!

chkimgxの使い方

画像のあいまい検索は、通常の画像検索と酷似して使いやすいです。ただし、変更された部分がわりとシビアなので、間違えないように注意しましょう。

まずは通常の画像検索の一例

IFB CHKIMG("画像ファイル名")
BTN(LEFT, CLICK, G_IMG_X+10, G_IMG_Y+10)
ENDIF

こちらを以下のように書き換えます。

STARTUP_CHKIMGX() //CHKIMGX関数開始
IFB CHKIMGX("画像ファイル名")
BTN(LEFT, CLICK, G_IMGX_X+10, G_IMGX_Y+10)
ENDIF
SHUTDOWN_CHKIMGX() //CHKIMGX関数停止

違う部分は「STARTUP_CHKIMGX()」~「SHUTDOWN_CHKIMGX()」で囲うこと。そして、画像検索もCHKIMG("画像ファイル名")から「CHKIMGX("画像ファイル名")」に変更され、場所指定がG_IMGから「G_IMGX」に変わります。

さらに画像ファイル名がこれまでは拡張子を省いても問題なかったのですが、あいまい検索は.bmpなど、ファイルの拡張子まで入力する必要があります。見落としやすい部分なのでご注意ください。

「STARTUP_CHKIMGX()」~「SHUTDOWN_CHKIMGX()」はあいまい検索を行う部分だけ囲えば問題ありません。G_IMGXもXが追加されるだけで、使い方は同じですので説明は割愛させていただきます。

これだけで、問題なく動きますが、あいまい検索は判断に時間がかかるため、動作が遅くなる場合が多いのが欠点です。オプションを設定して、検索範囲などを小さくして高速化しましょう。

chkimgxのオプションを紹介

chkimgxの検索範囲や方法を決めるオプションを紹介していきます。ベースとなる形は以下です。

CHKIMGX( "画像ファイル", ID, x1, y1, x2, y2, 番号, 判定閾値, 着目する色)

IDはウィンドウの指定になりますが、意味がわからなければ0で問題ありません。X1とY1は検索する範囲の始点となります。X2とY2が対角線の終点です。始点と終点を対角にした四角形が検索範囲となります。

検索範囲が小さければ小さいほど、精度もあがり、速度もアップしますが、毎回調べるのが面倒ですよね。

そんな場合は、以下のプログラムを、最初のACWの次に追加してください。

id = GETID(GET_ACTIVE_WIN)
x1 = STATUS(id, ST_X) // 始点X座標を返す
y1 = STATUS(id, ST_Y) // 始点Y座標を返す
x2 = x1 + STATUS(id, ST_CLWIDTH) //終点X座標を返す
y2 = y1 + STATUS(id, ST_CLHEIGHT)//終点Y座標を返す

これを入れておけば、X1~Y2に座標が自動で代入され、パソコン画面全体からゲームウインドウ全体に検索範囲を絞ってくれます。毎回座標を気にする必要がないので楽ですよ!

で、その次の番号は、同じような画像があるとき、左上から何番目を探すのか指定できます。似たような画像が1つしかないなら0で構いません。

判定閾値はあいまいさです。0から増える毎にどんどんあいまいになっていきます。20でかなりあいまいになりますので、それ以下での調節が無難です。環境に合わせて調節してください。僕は大体2でやっています。

着目する色はそのまま、検索する色を指定できます。よく分からないなら、「-1」マイナス1を指定してください。

以上がオプションの説明です。

今回紹介した検索範囲などのオプションを踏まえた、画像検索プログラムも念のために置いておきます。

STARTUP_CHKIMGX() //CHKIMGX関数開始
IFB CHKIMGX("画像ファイル名",0,x1,y1,x2,y2,0,2,-1)
BTN(LEFT, CLICK, G_IMGX_X+10, G_IMGX_Y+10)
ENDIF
SHUTDOWN_CHKIMGX() //CHKIMGX関数停止

マクロが短い場合、CHKIMGX( "画像ファイル" )だけでも使用できます。使っていて動作が遅い、うまく認識してくれないなどありましたら、オプションを設定してくださいね。

あいまい検索chkimgxのまとめ

あいまい検索はいかがだったでしょうか? 

紹介はできませんでしたが、複数使う場合には、以下のような形で問題ありません。

STARTUP_CHKIMGX() //CHKIMGX関数開始
//画像1のあいまい検索
IFB CHKIMGX("画像ファイル名1",0,x1,y1,x2,y2,0,2,-1)
BTN(LEFT, CLICK, G_IMGX_X+10, G_IMGX_Y+10)
ENDIF
//画像2のあいまい検索
IFB CHKIMGX("画像ファイル名2",0,x1,y1,x2,y2,0,2,-1)
BTN(LEFT, CLICK, G_IMGX_X+10, G_IMGX_Y+10)
ENDIF
SHUTDOWN_CHKIMGX() //CHKIMGX関数停止

つまり、STARTUP_CHKIMGX()とSHUTDOWN_CHKIMGX()は最初と最後だけに入れればいい、ということですね。

UWSCの性能が良すぎて、背景が動くボタンなどは100%使えませんでした。でもあいまい検索を導入すれば、そんなボタンでもクリック出来るようになります。

スマホゲームもだんだんと派手なボタンやアイコンが増えてきましたので、ある程度は幅のある検索ができないと厳しいです。

今は使わないと思っても、いずれ必要になるときがきますので、その時のためにぜひブックマークにでも入れておいてくださいね!

マクロを続けていくなら、いつか、どこかで必ず役に立ちますよ!

前の記事

次の記事

あなたにおすすめ

よく読まれている記事

同時に読まれている記事

書き込みはこちらから