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

関連記事

Quantopian の pyfolio を単利運用に対応させる。

pyfolio は どんなデータを入れても複利運用として計算してしまうので、人によっては望まない検証方法だったりし

記事を読む

vim-slime を使って VIM の内容をコンソールに送信

この記事はVim Advent Calendar 2016の20日目の記事です。 選択行の内容をコンソールに送信

記事を読む

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

記事を読む

Interactive Brokers 証券の Python API を利用する

Interactive Brokers 証券とは 日本には珍しく自動売買プラットフォームが提供されいてる証券会社です。

記事を読む

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

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

記事を読む

Pythonで簡単自動化!PyAutoGuiが便利すぎて感動したのでご紹介

以前こんな記事を書いていたのですが、これがまったく不要になるとても便利なPython Libraryがあった

記事を読む

Call Python/Numpy Function within Metatrader 4

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

記事を読む

Derivatives analytics with Python の学習ノート 1,2章

洋書を読んでいると、いつも読んだ気になってちゃんと理解出来てるか自信がないことが多いので、チャプターごとに要点をまとめ

記事を読む

DictCursor に AttrDict を指定する

記事を読む

Python x64 & MinGW64 環境の構築

流石に詰まりまくったのでまとめることにする。 MSYS2 をインストール 個人的にこれからメインで使いたいと思っ

記事を読む

Message

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

Adsense

PYPIへの登録を10秒でできるようになる方法

pip 使ってますよね Pythonを使っている人であれば、pip installでライブラリ

The art of debugging with GDB, DDD, and Eclipse の読書メモ

GDBの勉強がしたくて、下の本を原著で読んでみました。10年前の本だけど全然現役でした。

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

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

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

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

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

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

→もっと見る

PAGE TOP ↑