1. まとめトップ

【UWSC】画像認識 超入門編 UWSC 面倒な作業を自動化!

「Next」だったり「次へ」だったりボタンが変わるけど自動でクリックできないかな? キャプチャーとっておいたけど自動でそれを押せないかな?などなど、簡単に解決!? Twitterフォローなども自動化できるかも!? UWSC 画像認識・画像チェックの超入門編!BMP保存方法も記載^^

更新日: 2017年03月23日

Mochihaさん

  • このまとめをはてなブックマークに追加
3 お気に入り 48915 view
お気に入り追加

UWSC超入門編

上記内容が分かった上での、説明になります。

試しに、「GOOGLEを開き、ログインボタンを押してみる」

やることの流れ

1.画面キャプチャーを撮る
2.押したいボタン部分のみ残し、BMP(24ビット)で保存
3.UWSCで画像認識して、ボタンクリックを実行してみる!

1.画面キャプチャーを撮る

大体の人は知ってますよね!
キーボードの右上あたりにあるかなぁ・・・

2.ペイントに貼り付け、ボタン部分のみ残し、BMP保存

ペイントを開き、
CTRL +V で貼り付け。
クリックしたいボタンを範囲選択し、
CTRL + C でコピーします。

コピーしたら、
表示しているペイントサイズ?を小さくします。

右下に□があるので、
それをクリックして、
左上に運んで画像を小さくしよう!

小さくなったら、それに
コピーしておいたものを貼り付けます。
(左図のボタンは拡大表示してます)

クリックしたい範囲以外を保存すると
クリックできなくなります。
(ログインボタンの周りに
 余分なものを書いたり?すると
 クリックできません。
 クリックしたい範囲「のみ」を保存」

名前を付けて保存
BMPを選択します。

24ビット ビットマップ(*bmp)
であることを確認し、
保存します。

3.UWSCで画像認識して、ボタンをクリックしてみる

IFB CHKIMG("sample1.bmp") // 認識させたい画像ファイルを指定する
// 画像認識に成功した場合の処理をここに書く
MSGBOX("画像認識に成功しました。<#CR>G_IMG_X = " + G_IMG_X + "<#CR>G_IMG_Y = " + G_IMG_Y)
ELSE
// 画像認識に失敗した場合の処理をここに書く
MSGBOX("画像認識に失敗しました。")
ENDIF

上記方法では、座標が分かるだけ?です。
それをクリックするにはどうすれば良いか?

IFB CHKIMG("sample1.bmp")   // 認識させたい画像ファイルを指定する
 BTN(LEFT,CLICK, G_IMG_X, G_IMG_Y)
ELSE  // 画像認識に失敗した場合の処理をここに書く
   MSGBOX("画像認識に失敗しました。")
ENDIF

1秒ごとに監視して、クリックしたい場合は?

While True
//例えば、C:\Users\コンピュータ名\デスクトッ\uwsc510\BMPフォルダにある
//TEST.bmpを監視。
 fname = "C:\Users\ComputerName\Desktop\uwsc510\BMP\TEST.bmp"
 ifb !CHKIMG( fname,0,1,1,IMG_MSK_BGR4 ) and !CHKIMG( fname, -1, 1, 1 )
//画像が見つからない場合…
   Sleep(1)//とりあえず1秒待つ
else//画像が見つかった場合
   gid = GETID("Google")//Googleを含むウィンドウを選択。
   BTN(LEFT,CLICK, G_IMG_X, G_IMG_Y)// 画像の位置を、クリック!!
   sleep( 1)
 endif
Wend

ESC押すまで実行したいよ!!!!

> ・ESCを押したら強制終了できるようにしたい

// これをスクリプトの最初の方に書いておく
sethotkey(VK_ESC, 0, "ForceStop")

// これをスクリプトの最後に書いておく
procedure ForceStop()
 exitexit
fend

以前記載したのは間違っておりました。
失礼いたしました。

ログの書き出し方

fopen、fput、fclose

または

// これをスクリプトの最初に書いておく
OPTION LOGPATH="動作ログ.txt"

// print窓を非表示にする
logprint(false)

// 記録したいログの内容をprintする
print "記録したいログ"

UWSC掲示板にはいつも見ていますが
色んな情報が載っていて最高ですね…!皆さんお優しいですし、良い人ばかり!

注意点

IEの拡大、縮小などをやってしまうと
画像判定が上手く出来ませんorz
BMPも24ビット形式でないと、上手く反応してくれませんorz

私の適当プログラムも混じっているので
上手く行かないかもしれません…

CHECKIMGの説明

CHKIMG関数

指定画像が画面上にあるかチェックする
戻値 = CHKIMG( 画像名, [透過色/色無視, x1, y1, x2, y2, 番号, 色幅] )

画像名

(相対パスまたは絶対パスで)画像ファイル名 ※BMP形式のみ
透過色/色無視:
0:指定なし(デフォルト)
1:左上、2:右上、3:左下、4:右下の1ピクセルの色を透過色として処理
-1:色を無視して形でチェックする
x1, y1, x2, y2:サーチ範囲

番号

複数ある場合の左上からの順番を指定
-1が指定された場合はヒットした数を戻値として返し、
座標情報はALL_IMG_X[], ALL_IMG_Y[] に格納
G_IMG_X、G_IMG_Yには最後にヒットした位置が入る

1 2





興味があるものいついて書きます。面倒なことが嫌いで効率化が好きです。
気に入ったら「お気に入り」を
良い情報だったら友達と共有して頂けると嬉しいです!
プログラム関連についてもまとめていきます。