- 締切済み
画面の画像認識、画面操作プログラムの参考書
ゲームの画面を認識し、操作するプログラムを組もうと思っているのですが、参考になるサイト、或いは参考書を探しています。 例えば、PC上でエミュレートしたドラクエ3で、あるキーを押せばその場で5回あなほりするとか、HPが赤くなるまで自動的にレベル上げする等です。 特に知りたいのは、プロシージャや変数の考え方です。 1.画面の遷移パターンは色々ありますが、それぞれどのような名前をつけるか、比較用の画像とどのように紐付けるか、検索する時はどういう順番で検索していくか。 2.ある画面の時、あるキーかあるキーを押した時に、画面のどこをクリックする、という風にしたいのですが、どのようなコード、プロシージャで組めばいいか。 3.キーとマウスクリックする位置の組み合わせを簡単にカスタマイズできるようにするにはどうすればいいか。 等です。 今使っているのはVisual Basicですが、C++等別の言語でも問題ありません。 サンプルになるコードや考え方を見て、勉強したいと考えています。 どうか皆様のお知恵をお貸しください。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
本は、OpenCV系か、個人的には、「詳解 画像処理プログラミング」が、画像処理の参考になった。 けど、基本的な本だよ、これ。 >元の画像を用意しておき~ 現状その方法でやっているのですが、かなり強引なコードで、修正もメンテナンスもやりにくいものなのです。 は、強引なコードや修正やメンテナンスがしにくいのなら、しやすいようにコードを変えよう。 それは根本的な問題ではない。 どのみち簡単なレベルだと、それ以上は望めない。 次を目指すのなら、画像の類似度ではなく、OCRで文字にする。 画像の中の文字が、パソコンでも文字として認識できるようになれば、わざわざ元画像をキャプチャする手間は減る。 HPが赤くなるという判断はできなくなる(してもいいけど)が、HPの数値が15より下なら、どうこうするという分岐はできるようになる。 たぶん、一番面倒なのが、元画像のキャプチャだろう。 OCRを利用すれば、それからは、開放される。 更に上を目指すのなら、学習させるしかない。 学習といっても、パソコンくんには、ゲームで何が良い行動なのか?という価値観も、推測もないので、それを教えるか、実際にやってみるしかない。 ベイズ統計とかやると、比較的に簡単に、機械学習に触れられる。 HPが15以下になったら、薬草を使うを、正しい行動。 HPが15以上で、薬草を使うのは、間違った行動と、評価する。 スパムメールを処理するのと同じ。 宝箱とか、アイテムもそうで、クリックして、反応があれば(アイテムが見つかりました)、正しい行動。 反応がなければ、背景なので、正しくない行動、と学習させていけば、人間っぽい行動になるはず。 ただ、全くの情報がないケースでは、トンチンカンな行動をするのは仕方がない。 ミニゲームにスロットマシーンがあったとして、赤ちゃんに、スロットマシーンを見せても、それがどうすればいいのか?すら、わからないのと、同じ。 今は、ゲームのテストも、機械学習によって、行われていると聞くが、実際どういうコードなのかは、私は知らない。 テストだと、ゲームのソースコードもあるので、それも利用しているのかもしれない。 今は、ゲーム自動処理とか、検索すれば出てくるんじゃない? 知らんが。
一番簡単なのが、元の画像を用意しておき、1秒ごとにキャプチャし、カットし、同じもの、もしくは近いものになったら、何かさせるという分岐って感じでは。 画像の類似チェックさえできていれば、雑だけど、動くね。 あとは、そのゲームの規約と照らし合わせると。 オンラインゲームなんかだと、もうそんなの対象されてそうだよね。 本は、画像認識系の本を読むと良いと。
お礼
回答ありがとうございます。 >元の画像を用意しておき~ 現状その方法でやっているのですが、かなり強引なコードで、修正もメンテナンスもやりにくいものなのです。 自分は、プログラマーとしては素人も素人なので、先人の知恵をお借りできれば、と思い質問させて頂きました。 >本は、画像認識系の本を読むと良いと。 今度本屋に行った時に、軽く中身を立ち読みして、自分に必要そうなものを探してみようとおもいます。 おすすめの本があれば、教えて頂ければ嬉しいです。
お礼
回答ありがとうございます。 >詳解 画像処理プログラミング >基本的な本 情報ありがとうございます。 まだまだ手探りで試行錯誤している状態なので、基本を勉強できる本は、むしろありがたいくらいです。 >しやすいようにコードを変えよう。 しやすいコードがどんなものなのか、自体が分からないので、先人の知恵をお借りしたいと思いました。 >OCR 確かに、OCRで文字認識させた方が、汎用性も上がりますね。 難しいという意識が先立ち、選択肢から外していましたが、そちらの方も目を向けてみようと思います。 機械学習は、今やろうとしている事ではオーバースペックなので、将来の課題に致します。