指定画像が画面上にあるかチェックし、あればその情報を返します。
CHKIMG関数 (スクリプト関数)は色幅は64/256までは許容範囲ですが、形は完全に一致する画像しか検索しかできません。曖昧検索をする場合は、ChkImgX関数を使います。
- 構文
- Boolean = CHKIMG( 画像名, 透過色/色無視, x1, y1, x2, y2, 番号, 色幅 )
- 引数
- 画像名 (String = Empty)省略可
- 画像ファイル名(BMP形式のみ) (画像名を省略した場合はクリップボードから)
- 透過色/色無視 (Integer = 0)省略可
- 0
- 指定なし(デフォルト)
- 1,2,3,4
- 左上(1),右上(2),左下(3),右下(4)の1ピクセルの色を透過色として処理
- -1
- 色を無視して形でチェックする
- x1, y1, x2, y2 (Integer)省略可
- サーチ範囲
- 番号 (Integer = 0)省略可
- 複数ある場合に順番を指定 (左上から)
- -1
- -1が指定された場合はヒットした数を戻値として返し、座標情報はALL_IMG_X[],ALL_IMG_Y[]に格納
- 色幅 (#chkimg = 0)省略可
- チェックに色幅を持たせる (色無視指定時もしくは 16bitカラー以下の場合は無効)
- IMG_MSK_BGR1
- 各色(BGR)に対し 2/256の色幅を許す
- IMG_MSK_BGR2
- 各色(BGR)に対し 4/256の色幅を許す
- IMG_MSK_BGR3
- 各色(BGR)に対し 8/256の色幅を許す
- IMG_MSK_BGR4
- 各色(BGR)に対し 16/256の色幅を許す
- IMG_MSK_B1, 2, 3, 4
- 青に対し 2/256, 4/256, 8/256, 16/256の色幅を許す
- IMG_MSK_G1, 2, 3, 4
- 緑に対し 2/256, 4/256, 8/256, 16/256の色幅を許す
- IMG_MSK_R1, 2, 3, 4
- 赤に対し 2/256, 4/256, 8/256, 16/256の色幅を許す
演算可例:IMG_MSK_B1 or IMG_MSK_R3(青に対し 2/256の色幅を許す + 赤に対し 8/256の色幅を許す)
- 戻り値
有ればTRUE、無ければFALSE
TRUEの場合は見つかった座標を特殊変数G_IMG_X、G_IMG_Yに格納
番号にて -1指定時はヒットした数を返し、座標情報は配列変数ALL_IMG_X[],ALL_IMG_Y[]に格納(配列はゼロから)
画像名
画像名は現在実行しているUWSファイルがあるフォルダにある画像となります。現在のフォルダはGET_CUR_DIRで確認することができ、他のフォルダの画像を指定する場合は絶対パスで指定します。
サーチ範囲の座標について
左上が基準(x = 0,y = 0)です。x2,y2はx1,y1より大きい値(x1 < x2かつy1 < y2が成り立つ範囲)を指定してください。
アクティブウィンドウの範囲
色幅
色幅は24bit以上でないと無視されてしまいます。
ビットの深さは、[ファイル]を右クリック-[プロパティ]-[詳細]で確認、もしくはgetBitmap関数 (自作関数)で取得できます。
以下は左上から(B, G, R) = (180, 174, 255)~(219, 174, 255)の画像を並べています。
以下は上記画像のB成分をまとめた表です。画像の位置と対応しています。
| B成分の値 | |||||||||
|---|---|---|---|---|---|---|---|---|---|
| 180 | 181 | 182 | 183 | 184 | 185 | 186 | 187 | 188 | 189 |
| 190 | 191 | 192 | 193 | 194 | 195 | 196 | 197 | 198 | 199 |
| 200 | 201 | 202 | 203 | 204 | 205 | 206 | 207 | 208 | 209 |
| 210 | 211 | 212 | 213 | 214 | 215 | 216 | 217 | 218 | 219 |
以下は(B, G, R) = (200, 174, 255)の画像で、色幅を指定することで上に示したハートを並べた画像にどれだけの誤差までマッチするのかを調べるプログラム。
- 結果
以上の結果から、マッチする色幅は以下のようになることがわかります。
| 定数名 | マッチするBGRの範囲 |
|---|---|
| IMG_MSK_BGR1 | (-1, -1, -1)〜(+1, +1, +1) |
| IMG_MSK_BGR2 | (-3, -3, -3)〜(+3, +3, +3) |
| IMG_MSK_BGR3 | (-7, -7, -7)〜(+7, +7, +7) |
| IMG_MSK_BGR4 | (-15, -15, -15)〜(+15, +15, +15) |
| IMG_MSK_B1 | (-1, ±0, ±0)〜(+1, ±0, ±0) |
| IMG_MSK_B2 | (-3, ±0, ±0)〜(+3, ±0, ±0) |
| IMG_MSK_B3 | (-7, ±0, ±0)〜(+7, ±0, ±0) |
| IMG_MSK_B4 | (-15, ±0, ±0)〜(+15, ±0, ±0) |
| IMG_MSK_G1 | (±0, -1, ±0)〜(±0, +1, ±0) |
| IMG_MSK_G2 | (±0, -3, ±0)〜(±0, +3, ±0) |
| IMG_MSK_G3 | (±0, -7, ±0)〜(±0, +7, ±0) |
| IMG_MSK_G4 | (±0, -15, ±0)〜(±0, +15, ±0) |
| IMG_MSK_R1 | (±0, ±0, -1)〜(±0, ±0, +1) |
| IMG_MSK_R2 | (±0, ±0, -3)〜(±0, ±0, +3) |
| IMG_MSK_R3 | (±0, ±0, -7)〜(±0, ±0, +7) |
| IMG_MSK_R4 | (±0, ±0, -15)〜(±0, ±0, +15) |
IMG_MSK_RGB(数値) の数値を\(n\)とすると、以下が成り立ちます。
色幅:\((2^{n}-1) \times 2 + 1\)範囲:\(-(2^{n}-1)〜+(2^{n}+1)\)
エラー
CHKIMGでのヒット数が4096を超えるとエラーになるので、マッチさせる画像を大きくするか、調べる範囲を狭くするなどの対策が必要です。
使い方
以下の例でimage.bmpはスクリプトと同じディレクトリにあるものとします。
指定した画像があるか
指定した画像が画面上にある場合True、なければFalseを返します。
最初に見つかった画像をクリック
最初に見つかったビットマップ画像をクリックします。
最後に見つかった画像をクリック
最後に見つかったビットマップ画像をクリックします。
指定画像を色を無視してチェック
指定画像を色を無視して形のみでチェックします。画像が見つかればTrue、見つからなければFalseを返します。
指定した画像のヒット数を取得
指定したビットマップ画像のヒット数を取得します。
- 結果
指定した画像が見つかった座標を取得
指定したビットマップ画像が最初に見つかった座標をx,yの形式で出力します。
- 結果
指定した画像が見つかったすべての座標を取得
指定したビットマップ画像が見つかったすべての座標を出力します。インデックス番号は0から始まることに注意してください。
- 結果
見つかったすべての画像をクリック
画面上で見つかったすべてビットマップ画像をクリックします。ESCで処理を終了します。
ALL_IMG_X,ALL_IMG_Yは指定した画像の左上の座標なので、位置をずらしたい場合はその値を加算します。以下は見つかった画像の左上の座標から右に5px、下に10pxだけずらした位置をクリックします。
指定した画像が表示されるまで待機
指定した画像が画面上に表示されるまで処理を待機します。CHKIMG関数 (スクリプト関数)は画像が見つからなければFalse、見つかったときはTrueを返すので、<ruby>REPEAT文<rt></rt></ruby>でTrueになるまでループし待機します。
ゲームでの使用例
タップスターで星の画像の有無を判定します。ゲームを開始して星が表示されている状態にしてから以下のプログラムを実行してください。
星の素材は以下のファイルをダウンロードしてプログラムと同じフォルダに置いてください。違うフォルダに置く場合は、star.bmpにフルパスを指定してください。
ダウンロードした画像で認識しない場合は、スクリーンショットを撮り星の範囲で切り取ったあと24ビット ビットマップ(*.bmp;*.dib)で保存した画像を使用してください。
画像の有無
星の画像が見つかったら吹き出しに1、見つからなければ0と表示されます。
以下のプログラムは星の画像が見つかったら左クリックをします。
プログラム実行例
指定した範囲に画像があるかチェック
指定画像が左上の範囲にあればTrue、なければFalseを返します。
指定した画像の中央を左クリック
バックグラウンドでマッチした画像クリックする
関連記事
- PEEKCOLOR関数 (スクリプト関数)
- 指定位置の色を取得します。
- BGRToColor関数 (自作関数)
- 引数に指定された青成分、緑成分、赤成分、もしくは#BBGGRR形式の文字列からColor値を求めます。
- invertedColor関数 (自作関数)
- RGBの各成分、Color値、もしくは#RRGGBB形式の文字列から反転色を返します。返り値は引数と同じ形式で返します。
- colorToBGR関数 (自作関数)
- Color値を青成分、緑成分、赤成分に分解し格納した配列で返します。各成分は10進数の値で表されます。flgにTrueを指定した場合、#BBGGRRの形式で返します。
- SAVEIMG関数 (スクリプト関数)
- 画像を保存します。
- altClick関数 (自作関数)
- Web上(IE)の指定したalt属性を含む画像をクリックします。
- getBitmap関数 (自作関数)
- 引数に指定したビットマップ画像のサイズ・幅・高さ・ビットの深さを配列で返します。
- ACW関数 (スクリプト関数)
- ウィンドウの状態を変更、またはアクティブにします。
- MOUSEORG関数 (スクリプト関数)
- マウス座標を相対座標にする、またはマウスとキー情報を直接ウィンドウへ送ります。
- IE.Left プロパティ
- オブジェクトの左端の座標を取得または設定します。


