最新閲覧日:

uwsc超初心者です。
genymotionという仮想androidでゲームのボタンをポチポチすることをしたいのですが、画像認識してくれません。

無知な僕ですが頑張って書いてみました。

ACW(GETID("Genymotion for personal use - Google Nexus 7 - 4.3 (800x1280, 213dpi) - 192.168.56.101","QWidget"),522,121,438,676,0)
IFB CHKIMG("1.bmp") // 認識させたい画像ファイルを指定する
// 画像認識に成功した場合の処理をここに書く
MMV(G_IMG_X, G_IMG_Y)
BTN(LEFT,CLICK)
ELSE
// 画像認識に失敗した場合の処理をここに書く
MSGBOX("画像認識に失敗しました。")
ENDIF

これで実行したら「画像認識に失敗しました」と出てきます。
画像形式はbmpです。

だれか助けてください。

このQ&Aを見た人が検索しているワード

このQ&Aに関連する最新のQ&A

A 回答 (3件)

WinShotで設定が正しければ(ビットマップで保存・減色しない)、確実にbmpになっているはず。

それも使ったことがあるツールですし。保存したものをペイントで開いてみればわかるでしょう。拡張子を変えただけのインチキだったら開けないか、文句を言われるはずなんで。

普通はPrintScreenキーを押して、ペイントに貼り付けて欲しい部分を切り出し、ビットマップで保存するだけです。

どっちの方法でも、減色せず24ビットのビットマップで保存する必要はありますが、やっていることはツールか手作業かの違いだけです。ただし先の回答で貼ったリンク先にも書いてあったと思いますが、画面コピーは色が微妙に変わることがあるようなので、UWSC側でchkimgする時に色の認識幅を設定するか、色情報を無視してやる必要があるかも知れません。UWSCのヘルプでchkimgのところを参照するか、ググってみましょう。
    • good
    • 0
この回答へのお礼

大変お世話になりました。
おかげさまでbmp形式のことがよくわかりました。
色認識幅の設定を頑張ってみます!
ありがとうございました!

お礼日時:2015/07/19 12:58

> この文の意味があまりよくわからないので



今のバージョンではどうなのか、試してみました。すると8x8の画像でも認識できたんで、画像の大きさはとりあえず気にしなくても良さそうです。となると考えうる原因は、以下の2つ。

1)画像が一致していない
2)見ている画像が間違っている

以下の説明が詳しいんで、そっちを参照してみてください。たぶんそれでいけるはず。

http://d.hatena.ne.jp/TipsMemo+computer-technolo …
    • good
    • 0
この回答へのお礼

何度も申し訳ないです。

私は、「winshot」というアプリの「ビットマップ保存」という機能を使って画像を取得しています。
それでbmp形式になっていると思うのですが、それではだめだとおもいます。
もしよければ、RandenSai様の画像の取得はどのようにしているのか教えてくれないでしょうか?


http://detail.chiebukuro.yahoo.co.jp/qa/question …
このサイトの「ベストアンサーに選ばれた回答」で
>jpg保存した画像を24bitbmpで保存しなおしただけ・・とかじゃないですよね。
というものがありますが、解決策はどうすればいいのでしょうか?

質問ばかりで本当に申し訳ございません。
よければ教えていただけませんか?よろしくお願いします

お礼日時:2015/07/17 23:20

真っ先に一点確認として、認識させたい画像ファイルとやらはどのフォルダにありますか?もしuwsc.exeとは違うフォルダに入れてるんだったら、フルパスでフォルダ名まで書かないとだめです。

もしデスクトップだったら C:\Users\貴方のユーザー名\Desktop\1.bmp みたいに。

最近のUWSCではどうだか知りませんが、以前は確か幅が16ピクセルとかの小さい画像だと、あってるのに不一致になっちゃうことがあったような・・・お試しで64x64とかの画像を作り、その画像をペイントか何かで開いておいてスクリプトを実行し、不一致と言われないけど本チャン画像だったら言われるようだと、このパターンに陥ってることになります。この場合はめんどくさくても、PEEKCOLOR関数でボタンの色を調べるしかないです。一点だけだと誤動作するから、最低でもボタンの四隅と真ん中は見ないとだめで、必要に応じ点数を増やすことになるでしょう。
    • good
    • 0
この回答へのお礼

回答ありがとうございました。
しかし、ファイルを同じ場所にしてみてもできませんでした。

RandenSaiさんが言われた

「最近のUWSCではどうだか知りませんが、以前は確か幅が16ピクセルとかの小さい画像だと、あってるのに不一致になっちゃうことがあったような・・・お試しで64x64とかの画像を作り、その画像をペイントか何かで開いておいてスクリプトを実行し、不一致と言われないけど本チャン画像だったら言われるようだと、このパターンに陥ってることになります。この場合はめんどくさくても、PEEKCOLOR関数でボタンの色を調べるしかないです。一点だけだと誤動作するから、最低でもボタンの四隅と真ん中は見ないとだめで、必要に応じ点数を増やすことになるでしょう。」

私が無知なので、この文の意味があまりよくわからないので、申し訳ないのですがもう少し詳しく書いていただけないでしょうか?
すみません。

お礼日時:2015/07/17 16:20

このQ&Aに関連する人気のQ&A

このQ&Aと関連する良く見られている質問

QLua, lua_pushstringに渡す文字列

ネット上のサンプルを見ると

lua_pushstring(L, "Hello world");

があります。

この"Hello world"の実体は、このスコープ内で何処かに存在することが保証されているだけで、スコープを抜けると直後に消えてしまうかもしれない、との記憶があります。

本来なら

lua_pushstring(L, strdup("Hello world"));

して、Lua側で渡されたポインタをfree()するべきだと思うのですが、そうしているサンプルがありません。

Luaを少し読むと、呼ばれた後で自前で複製しているようですが、その複製を行うまでにその内容が保存されているとことが前提となっているのでしょうか。

Aベストアンサー

「スコープを抜ける」を勘違いしているように思います。

スコープに入る

いろんな処理(「他の関数を呼び出す」も含む)

スコープを抜ける: これ以降、「スコープ内だけで有効なもの」を使ったときの保証が無くなる

というのが基本的な流れです。

lua_pushstring(L, "Hello world");
は「いろんな処理」にあたり、スコープを抜けることになりません。

もしlua_pushstringでスコープを抜けて、文字列が無効になるなら、
printf("Hello world");
の printf でスコープを抜けて、"Hello world"が無効になるので、printfが出力できない、という理屈になります。


また
https://www.lua.org/pil/24.2.1.html
には「Lua never keeps pointers to external strings(以下略)」と明記されています。



これとは別に。
文字列リテラルの寿命からして、「スコープを抜けたら消える」というものではありません。
過去の質問にこんなのがありました。
https://oshiete.goo.ne.jp/qa/7879297.html

「スコープを抜ける」を勘違いしているように思います。

スコープに入る

いろんな処理(「他の関数を呼び出す」も含む)

スコープを抜ける: これ以降、「スコープ内だけで有効なもの」を使ったときの保証が無くなる

というのが基本的な流れです。

lua_pushstring(L, "Hello world");
は「いろんな処理」にあたり、スコープを抜けることになりません。

もしlua_pushstringでスコープを抜けて、文字列が無効になるなら、
printf("Hello world");
の printf でスコープを抜けて、"Hello world"が無効になるので...続きを読む

Q初学者_Python_1

Pythonについての質問です。

初歩も初歩、もしかしたらPythonというよりはコマンドプロンプトの質問かも知れませんが・・・

Python27のファイルをC直下におき、初歩の初歩「Hello,world」の.pyファイルをつくってみました。
そして走らせようとしたところ、むりでした。表示は画像の通りです。

パスが通ってないわけではないようです。
どういうことでしょう。

ちなみに、直接
print"hello,world"
では
hello,world
と表示されます。

Aベストアンサー

windowsのコマンドプロンプトでpython(改行)と入力した場合は
インタプリタが起動して'>>>'が表示されます。
この状態では、print文のようなpythonのコマンドを直接入力してその結果が表示されます。
インタプリタを終了させるのは、Ctrl+ZまたはCtrl+Cです。


ファイルに書いたpythonのプログラムを実行する場合は
windowsのコマンドプロンプトから

python ファイル名(改行)

と入力してみてください。

例:python helloworld.py

参考URL:http://docs.python.jp/2.5/tut/node4.html

QUWSC 画像認識で条件分岐

画像Aが出てくるまで待ち画面をクリック、その後、画像Bが出てくるまで待ち画面をクリック。
画像Aが現れなければ、画像Bが出てくるまで待ち、画像をクリックする。
という文を書きたいのですが、うまくいきません。

画像Aはランダムで現れます。画像Aが現れた場合、画面をクリックしない限り、画像Bは現れません。

以下の文では画像Aが現れない限りはうまく回るのですが、画像Aが現れるとそこで止まってしまいます。どこがまずいのでしょうか。
何分この手のものエクセルぐらいしか触ったことがなく困っています。よろしくお願いします。
//
if chkimg("A.bmp")=true then
btn(left,0,100,100,50)
else
repeat
sleep(0.2)
until chkimg("B.bmp")=true
btn(left,0,100,100,50)
endif
//

Aベストアンサー

> 以下のように記述してみたんですが

完璧じゃないですか!画像Aがクリックしたい目標物だったら、確かにG_IMG_X,G_IMG_Yを使うのが一番確実な方法です。これだと、もし画像Aの表示される場所が変わっても影響を受けませんから。ただG_IMG_X,G_IMG_Yは画像の左上隅を指しているため、個人的には気味が悪いと感じるので(すごいギリギリの場所をクリックしているわけだから)、4くらい足しています。画像がクリック目標に対して余白を持っている場合は、足す数が4では足りない場合もあります。

ちなみにG_IMG_Xを変数にコピーせずに使うことも可能なので、それでやると大幅に短く書けます。

REPEAT
SLEEP(0.1)
IF chkimg("A.bmp") Then BTN(left,0,G_IMG_X,G_IMG_Y,50)
UNTIL chkimg("B.bmp")
BTN(left,0,100,100,50)

> 私が質問文であげていたのでは、画像Aをチェックする文に繰り返し処理がかかって
> いなかったのですね。それで止まっていたんだと思います。

VBAだけ見てきた人が知ってる世界とUWSCはかなり異質なものなので、迷って当然と思います。VBAはある意味普通のVBと同じくイベント駆動型の言語だから、クリックイベントなどの中に処理を書いておけば、いちいちループで繰り返し見張っている必要がないのに対し、UWSCにはイベントの概念がなく、クリックもキー入力もスクリプトに書いた場所でしか判定されない、よって繰り返しにしないと一回しか見てくれない。またVBAだとマクロの最終行に来ても次の操作が来るまで待機するだけだけど、UWSCではスクリプトが終了する等。

> 以下のように記述してみたんですが

完璧じゃないですか!画像Aがクリックしたい目標物だったら、確かにG_IMG_X,G_IMG_Yを使うのが一番確実な方法です。これだと、もし画像Aの表示される場所が変わっても影響を受けませんから。ただG_IMG_X,G_IMG_Yは画像の左上隅を指しているため、個人的には気味が悪いと感じるので(すごいギリギリの場所をクリックしているわけだから)、4くらい足しています。画像がクリック目標に対して余白を持っている場合は、足す数が4では足りない場合もあります。

ちなみにG_IMG_Xを...続きを読む

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング

おすすめ情報