Wizard In The Market
システムトレードの魔術師

*

Pythonで簡単に画像検出でLinux GUI操作自動化ライブラリを作ったよ

公開日: : 最終更新日:2015/02/26 Autoaction, Python , , , , , , ,

3356358479_a0e3ee8a05_z

Photo by John Greenaway

[2015/02/07 追記]

こんなの見つけました。これがあれば不要ですね・・。

[/追記]

こんにちは、キリンです。

WindowsにAutoHotKeyという自動操作を簡単に作成できるソフトがありまして、その代替的機能をUbuntu上で実現できるソフトがないかと探していました。しかし、納得の行く既存のソフトがなかったので自分で作成してみたというお話です。

AutoHotKeyとは

AutoHotkey とは、Microsoft Windowsが導入されているパーソナルコンピュータに常駐して一連の操作を自動化するためのユーティリティソフトウェアである。(Wikipediaより)

このソフト、めちゃくちゃ便利なんですよね。画像検出でGUIの操作ができるWindows上のマクロソフトの中でもカスタマイズ性に富んでいて、何よりも画像検出の速度が速い。使っていたRuby上からコマンドライン呼び出しで引数を渡しながらGUIの自動操作を行うということを良くしていました。自作DLLの呼び出しもでき、MySQLとの連動ができるライブラリの公開もあったりして、ほんとなんでもできるようになっている自動化ソフトです。

これだけ便利だと、なかなか他を使わなくなってしまうんですが、今回はLinux環境ということで諦めざるをえません。なので代替ソフトがないかなぁと探してみました。

代替ソフトウェアの候補

似たようなことを考える人は多いようで、すでにまとめてらっしゃる方がいたので記事をご紹介します。

色々紹介されていますが、個人的に使えそうだなと思ったのは以下の3つです。

AutoKey

AutoHotKeyの常駐アプリとしての機能を補完したいならこれ。ただ、画像検出でクリックする機能がない。あと、できるならpython上で動かしたい。

Sikuli

Linux上で画像検出による自動クリックを実現したいならこれ。ただ、Jythonというのが気に入らない。

Xpresser

Python上で動くライブラリ。動画は実際にXpresserを使って、GUI操作自動化スクリプトを即座に作ったhowto動画です。機能だけみてみたら個人的には大満足!

・・・のはずなんだけど、Xpresserがちゃんと動かないんです。デバッグしながら色々調べてみたところ、Xpresserで使っているSimpleCVというライブラリがちゃんと機能していない模様。

SimpleCVとは?

OpenCVのラッパーのような感じで、簡単にOpenCVを使おうよみたいな趣旨で作成されたライブラリみたいです。

SimpleCVの動作不良

スクリーンショットのPNGから指定位置の画像(x=10, y=10, w=30, h=30)を取り出して、ちゃんと取り出した部分を画像検出で抽出するかということを検証した簡単なプログラム。本来ならばっちりx=10, y=10の点で最も良い結果が得られるはずなのに、全然ちゃんと動かない。とんでもない点が抽出されたり、何よりQualityの値が悪すぎて使い物になりません。なので、ちゃんと動く大元のOpenCVを使って改良してみました。

GUI操作自動化ライブラリ Autoaction

Xpresserの優秀なモジュールであるxutils.pyを使って、簡単にGUIを操作自動化のライブラリを作ってみました。
まだクリックすることと、キーボードを入力することしか対応していませんが、必要になり次第、徐々に機能の拡充を図っていこうと思います。

インストール

インストールはsetup.pyしか用意していませんので、GitHub上からダウンロードして、ディレクトリのルートで下記コマンドを実行してください。
python-opencvも必要なので、インストールしてない人はapt-get等からインストールしてください。

サンプルコード

こんな感じのコードを書けば、自動でFirefoxの検索窓から”python-autoaciton”を自動で検索してくれます。

まだ複合キーの送付等には対応していません。随時追加していこうと思います。

余談

作っている最中に、こんなのを見つけました。まだ詳しく調べられてませんが、実はこれで事足りるのかも?。

ご参考になれば幸いです!

にほんブログ村 為替ブログへ 
Fx-Kirin

About Fx-Kirin

2009年10月にFXを開始、翌年2010年5月から脱サラをしてFX業界に専念。 2012年10月頃から本格的に勝ち始め、一月で資産を倍にする、2年半月間負けなし等、安定した収支で2013年11月に生涯FX収支が1億を超える。 投資スタイルはシステムトレード。プログラミングの知識がほぼない状態から、独学で自分がしたいと思うことであればほぼ実現することが可能なレベルまで成長。好きな言語はRuby, Python。必要となればC++からVBA、Pascal等なんでも行う。MT4/MT5のプログラミングも得意。 2011年にはFXで稼いだ資金をもとにシンガポールに移住し、留学も兼ねて起業をチャレンジするほど、ビジネスを興すことに熱意がある。国内の業者を主に使い始めたことから、2012年に帰国。零細株式会社経営中。

Adsense

  • このエントリーをはてなブックマークに追加
  • Pocket
  • 67 follow us in feedly

関連記事

Python Mock で オリジナルのインスタンメソッドのを呼びたい時

autospec と sideeffect を組み合わせるのが解決策だった。

記事を読む

まだBokehで消耗してるの?これからはPandas-Bokehを使おうぜ

タイトルはあまり気にしないでください。全然、Bokehで消耗する価値があるとは思っています。ただ、最近Pandasの

記事を読む

Call Python/Numpy Function within Metatrader 4

Github Link [bm url="https://github.com/fx-kirin/mt4-nump

記事を読む

絶対ダメ! マルチスレッドでの共通変数のインクリメント演算

デバッグ中の発見 とあるマルチスレッドプログラムをPythonで書いていた際に遭遇した誤使用です。C/C++等

記事を読む

Python 2, Python 3 で更新したファイルを調べてreloadするパッケージを作った。

pdbでのデバッグにはreload機能がない IPythonには優秀なautorelaod機能がマジックコマンドで

記事を読む

Rust で Python の拡張ライブラリ作成 と numpy との性能比較

この記事は Python Advent Calendar 5日目の記事です。遅れてすみません。 Rust で Py

記事を読む

ipdb だけではなく IPython.embed も使おう

ipdb だと複数行の挿入ができなかったりするが、その問題が解消される。明らかにこちらのほうが使い勝手がいい。行のデ

記事を読む

重回帰分析による米雇用統計の予測モデルを作成してみる

この記事はPython その2 Advent Calendar 2015 の17日目の記事です。 1 はじめに

記事を読む

Python 2, Python 3 で string を bytes に変換する。

共通の処理系にしておきたかったので、メモ書き。 [bm url="https://python-future.or

記事を読む

CPP extension vs Cython vs CPython on calculating the mean of numpy array

I'd like to get any feedback to make cython faster like

記事を読む

Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

Adsense

JupyterでボタンからJavascriptを実行して追加のアウトプットをさせない方法

Javascriptを実行するとアウトプットセルの行が増える これがとても面倒だった。上の

まだBokehで消耗してるの?これからはPandas-Bokehを使おうぜ

タイトルはあまり気にしないでください。全然、Bokehで消耗する価値があるとは思っています。ただ

SQLAlchemy のマイグレーションライブラリ Alembic を使ってみる。

SQLAlchemyの作者が作ったデータベースマイグレーションツール。個人的には、SQLAlch

Avoiding the problem of connect to outside of LAN with L2TP/IPSec on Ubuntu 18.04.

とても困って、原因の特定に2日かかった。疲れた。確定申告したいのに。 The IPSEC tu

Wine 上の MT4から ZeroMQ を使って Linux の pyzmq の通信をさせる

こんにちは。キリンです。 最近、年に数度のMQLを書くときがきたのですが、Pythonに慣れま

→もっと見る

PAGE TOP ↑