CHKIMGチェックイメージ関数

本ページには広告が含まれています。

指定画像が画面上にあるかチェックし、あればその情報を返します。

CHKIMG関数 (スクリプト関数)は色幅は64/256までは許容範囲ですが、形は完全に一致する画像しか検索しかできません。曖昧あいまい検索をする場合は、ChkImgX関数を使います。

構文
  1. 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[]に格納
G_IMG_XG_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_XG_IMG_Yに格納

番号にて -1指定時はヒットした数を返し、座標情報は配列変数ALL_IMG_X[],ALL_IMG_Y[]に格納(配列はゼロから)

画像名

画像名は現在実行しているUWSファイルがあるフォルダにある画像となります。現在のフォルダはGET_CUR_DIRで確認することができ、他のフォルダの画像を指定する場合は絶対パスで指定します。

サーチ範囲の座標について

左上が基準(x = 0,y = 0)です。x2,y2x1,y1より大きい値(x1 < x2かつy1 < y2が成り立つ範囲)を指定してください。

アクティブウィンドウの範囲

UWSC

色幅

色幅は24bit以上でないと無視されてしまいます。

ビットの深さは、[ファイル]を右クリック-[プロパティ]-[詳細]で確認、もしくはgetBitmap関数 (自作関数)で取得できます。

UWSC

以下は左上から(B, G, R) = (180, 174, 255)~(219, 174, 255)の画像を並べています。

BGR=180-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=200,174,255
UWSC
結果
プレーンテキスト

以上の結果から、マッチする色幅は以下のようになることがわかります。

定数名 マッチする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を超えるとエラーになるので、マッチさせる画像を大きくするか、調べる範囲を狭くするなどの対策が必要です。

CHKIMG HIT数が最大値(4096)を超えました

使い方

以下の例でimage.bmpはスクリプトと同じディレクトリにあるものとします。

指定した画像があるか

指定した画像が画面上にある場合True、なければFalseを返します。

UWSC

最初に見つかった画像をクリック

最初に見つかったビットマップ画像をクリックします。

UWSC

最後に見つかった画像をクリック

最後に見つかったビットマップ画像をクリックします。

UWSC

指定画像を色を無視してチェック

指定画像を色を無視して形のみでチェックします。画像が見つかればTrue、見つからなければFalseを返します。

UWSC

指定した画像のヒット数を取得

指定したビットマップ画像のヒット数を取得します。

UWSC
結果
プレーンテキスト

指定した画像が見つかった座標を取得

指定したビットマップ画像が最初に見つかった座標をx,yの形式で出力します。

UWSC
結果
プレーンテキスト

指定した画像が見つかったすべての座標を取得

指定したビットマップ画像が見つかったすべての座標を出力します。インデックス番号は0から始まることに注意してください。

UWSC
結果
プレーンテキスト

見つかったすべての画像をクリック

画面上で見つかったすべてビットマップ画像をクリックします。ESCで処理を終了します。

UWSC

ALL_IMG_X,ALL_IMG_Yは指定した画像の左上の座標なので、位置をずらしたい場合はその値を加算します。以下は見つかった画像の左上の座標から右に5px、下に10pxだけずらした位置をクリックします。

UWSC

指定した画像が表示されるまで待機

指定した画像が画面上に表示されるまで処理を待機します。CHKIMG関数 (スクリプト関数)は画像が見つからなければFalse、見つかったときはTrueを返すので、<ruby>REPEAT文<rt></rt></ruby>Trueになるまでループし待機します。

UWSC

ゲームでの使用例

タップスターで星の画像の有無を判定します。ゲームを開始して星が表示されている状態にしてから以下のプログラムを実行してください。

星の素材は以下のファイルをダウンロードしてプログラムと同じフォルダに置いてください。違うフォルダに置く場合は、star.bmpにフルパスを指定してください。

ダウンロードした画像で認識しない場合は、スクリーンショットを撮り星の範囲で切り取ったあと24ビット ビットマップ(*.bmp;*.dib)で保存した画像を使用してください。

画像の有無

星の画像が見つかったら吹き出しに1、見つからなければ0と表示されます。

UWSC

以下のプログラムは星の画像が見つかったら左クリックをします。

UWSC

プログラム実行例

指定した範囲に画像があるかチェック

指定画像が左上の範囲にあればTrue、なければFalseを返します。

UWSC
使用関数

指定した画像の中央を左クリック

UWSC
使用関数

バックグラウンドでマッチした画像クリックする

UWSC
使用関数

関連記事

PEEKCOLOR関数 (スクリプト関数)
指定位置の色を取得します。
BGRToColor関数 (自作関数)
引数に指定された青成分、緑成分、赤成分、もしくは#BBGGRR形式の文字列からColor値を求めます。
invertedColor関数 (自作関数)
RGBの各成分、Color値、もしくは#RRGGBB形式の文字列から反転色を返します。返り値は引数と同じ形式で返します。
colorToBGR関数 (自作関数)
Color値を青成分、緑成分、赤成分に分解し格納した配列で返します。各成分は10進数の値で表されます。flgTrueを指定した場合、#BBGGRRの形式で返します。
SAVEIMG関数 (スクリプト関数)
画像を保存します。
altClick関数 (自作関数)
Web上(IE)の指定したalt属性を含む画像をクリックします。
getBitmap関数 (自作関数)
引数に指定したビットマップ画像のサイズ・幅・高さ・ビットの深さを配列で返します。
ACW関数 (スクリプト関数)
ウィンドウの状態を変更、またはアクティブにします。
MOUSEORG関数 (スクリプト関数)
マウス座標を相対座標にする、またはマウスとキー情報を直接ウィンドウへ送ります。
IE.Left プロパティ
オブジェクトの左端の座標を取得または設定します。