画像認識を行うCHKIMG関数の使い方とゲームマクロに役立つサンプルコード

      2016/05/15

CHKIMG関数 を使った画像認識の使い方とサンプルコード。
TIPSメニューにも画像認識のコツを書いたページがあるので参考にしてください。

指定画像があるかチェックし結果を返す

hoge = CHKIMG(filename.bmp)

filename.bmp が画面上にあるかをチェックし、結果を hoge に格納する。
変数名と画像名は適当なので各々で決める。

指定した画像が画面上に見つかれば、特殊変数 G_IMG_X , G_IMG_Y に見つかったX,Y座標を格納する。
つまり、上記のコードで画面内にfilename.bmpが存在した場合、以下のようにその情報を流用できる。

hoge = CHKIMG(filename.bmp) //CHKIMGの結果がhogeに格納される
MMV(G_IMG_X,G_IMG_Y) //マウスカーソルを画像を認識した位置に移動させる

指定画像があるかどうかで条件分岐する

if chkimg(filename.bmp) then 処理

もし CHKIMG でfilename.bmpと一致するか調べた結果(戻値)が TRUEなら 処理(例えば KBD など)

指定画像がないときに条件分岐したい

if chkimg(filename.bmp)
 sleep(0.02)
else
 処理
endif

もし CHKIMG でfilename.bmpと一致するか調べた結果(戻値)が TRUEなら 0.02秒 SLEEP する。
そうでなければ 処理(例えば KBD など)

指定範囲内のみで検索させる

hoge = chkimg(filename.bmp,0,X1,Y1,X2,Y2)

X1,Y1,X2,Y2 の部分にそれぞれ座標を入れて範囲を絞ってやればその中で判別する。
大体場所が決まっているのに画面全体を探すのは非常に効率が悪い。

サンプルコードの 0 の部分は透過色や色無視の設定をする所で、CHKIMG関数 ページを見てもわかる通り順番というものがあるので、省略せずにデフォルトの値を入力している。

サンプルコードでは結果を hoge に格納しているが、もちろん先の例のように条件分岐の条件として使ってもいい。
TIPSメニューに座標に関する記事があるので、座標というものがよく判らなければ以下のページを参考にして下さい。

座標の違いと取得方法(絶対・相対・オブジェクト)

「もっと詳しく!」「こうできないの?」この記事に関連する質問や要望があればコメントかメールで聞いてね!

 - サンプルコード , , , , , , , , , , , , , , ,