※2019/10/19に内容を更新しました。
latest stable versionのDownloadページのバージョン表示がSikuliX2.0.xになっています。見た目も機能もSikuliX1.1.4から変わっていないようです。SikuliX1.1.4をリリースした際、『SikuliX2の機能を取り込んだバージョンだ。』と開発者が書いていたので、バージョン表記も2に上げたのでしょう。(想像)
■SikuliX1.1.4になって変更になったこと
(1)SikuliX1.1.3までC++で実装されていたほとんどの機能がJavaで実装されました。
(2)画像認識に使っているOpenCVのバージョンが3.4になりました。
(3)OCR機能に使っているライブラリがTess4j(OCRエンジンはTesseract OCR3.0.5)となりました。
■SikuliX1.1.4で追加された機能
(1)画像マスク機能
検索に指定する画像(png形式の画像)は、これまでの通り矩形でキャプチャしたものですが、その画像の中で検索するときに無視したい範囲をマスクすることができます。
SikuliX IDEで[表示]-[Show thumbnails]をONにしているときは、Pattern().mask()の部分が画像表示に代わります。画像の右上の「M」の文字が、マスク指定をしていることを表しています。code1とcode2は画像1つ(背景が黒色の画像なら、画像1つでマスク指定ができます。 )、code3とcode4は検索画像とマスク画像の2つの画像を使っています。検索画像とマスク画像の2つの画像を使う場合、ピクセルサイズは同一にしなければなりません。([Show thumbnails]をONにしてもマスク画像がどんな画像なのか表示されないのが欠点です。)
【補足1】
透過情報を保持した画像を使って検索する場合は、マスク指定なしでfind(画像)とするだけで検索できます。SikuliX IDEで[Show thumbnails]をONにしているとき、透明部分が黒色で表示されるので、透明なのか黒色なのか判別できなくなります。(透明な画像を使ったスクリプト例はここを参照。)
【補足2】
透明な部分を持つ画像やマスク指定パターンを条件にして検索する場合は、最小類似度を高く(90%以上か?)しておかないと、誤検知する場合があるかもしれません。(検索対象画像に依存する現象かもしれませんが、まだよく理解できていません。)
【補足3】
透明な部分を持つ画像やマスク画像を生成する機能はSikuliX IDEには無いので、画像編集ソフトを使って作ります。
(2)findAll系の新しい機能
findAll()の戻り値は、マッチオブジェクトのイテレータで、イテレータを操作するために、hasNext()とnext()を使う必要がありました。SikuliX1.1.4から、マッチオブジェクトをリストで返す関数が各種追加になっています。
・findAllList:findAllと同様ですが、戻り値がマッチオブジェクトのリストです。
・getAll:findAllListと同じです。
・findAllByRow:findAllListの結果をY座標の小さい順(スクリーンの上から下)に並び替えたリストを返します。
・findAllByColumn:findAllListの結果をX座標の小さい順(スクリーンの左から右)に並び替えたリストを返します。
(3)OCR機能の使い方
日本語OCRを使いたいときは、ここから「jpn.traineddata」をダウンロードして「C:\Users\ユーザー名\AppData\Roaming\Sikulix\SikulixTesseract\tessdata」に格納しておきます。
※2018/9/8のNightly BuildからOCR言語の切替が使えるようになっています。
(4)[Run Selection]機能
SikuliX IDEのスクリプトエディタで連続した行の範囲を選択して、[Ctrl]+[Shift]+[r]キーを押すと、選択した範囲を部分的に実行することができます。
(1)1~6行を選択して[Ctrl]+[Shift]+[r]
(2)8~9行を選択して[Ctrl]+[Shift]+[r]
上記操作で、plus()の実行を1回だけ確認することができます。
■画像識別精度の比較
Windows10アクセサリにある「ペイント」の色指定タイルの部分を使って、SikuliX1.1.3とSikuliX1.1.4の画像識別精度を比較してみました。右上端の「紫」のタイルを検索条件画像に使って、どちらも最小類似度を95%に設定して行いました。
(1)SikuliX1.1.3の場合
マッチングプレビューでも4つ見つかりました。
(2)SikuliX1.1.4の場合
マッチングプレビューでも1つしか検出されていません。
同じ最小類似度でSikuliX1.1.4の方が絞り込みができているので、精度が上がっていると思われます。
■SikuliX1.1.4とSikuliX2.0.0の見かけの違い
(1)Javaのアイコンを使わなくなってる。
latest stable versionのDownloadページのバージョン表示がSikuliX2.0.xになっています。見た目も機能もSikuliX1.1.4から変わっていないようです。SikuliX1.1.4をリリースした際、『SikuliX2の機能を取り込んだバージョンだ。』と開発者が書いていたので、バージョン表記も2に上げたのでしょう。(想像)
■SikuliX1.1.4になって変更になったこと
(1)SikuliX1.1.3までC++で実装されていたほとんどの機能がJavaで実装されました。
(2)画像認識に使っているOpenCVのバージョンが3.4になりました。
(3)OCR機能に使っているライブラリがTess4j(OCRエンジンはTesseract OCR3.0.5)となりました。
条件・使い方 | SikuliX1.1.2 | SikuliX1.1.4 |
---|---|---|
プラットフォーム前提条件 | Javaバージョン8以上が必要。 | 64ビット版のOSのみサポート。 Javaバージョン8以降(64ビット版)が必要。 Visual C++ Redistributableの最新バージョンが必要。(Visual C++ 2013 Redistributable以降ならOKかも) |
セットアップ手順 | sikulixsetup-1.1.2.jarをダウンロードしてダブルクリックすると、セットアップが開始する。 必要ファイルを順次ダウンロードしながらセットアップが進行し、最終的にsikulix.jarとrunsikulix.cmdが生成される。 | sikulix.jarとjython-standalone-2.7.1.jarをダウンロードして、sikulix.jarをダブルクリックする。 jython-standalone-2.7.1.jarは、自動的に「C:\Users\ユーザー名\AppData\Roaming\Sikulix\Extensions」に格納される。 |
SikuliX IDEの起動方法 | runsikulix.cmdをダブルクリックする。 | sikulix.jarをダブルクリックする。 |
コマンドラインからの実行 | runsikulix.cmdをダブルクリックすることでコマンドプロンプトウインドウが表示し、printやデバッグログはコマンドプロンプトウインドウに表示される。 | 「java -jar C:\SikuliX1.1.4\sikulix.jar -c」のような内容でバッチファイルを作っておけば、バッチファイルを実行することが可能で、printやデバッグログをコマンドプロンプトウインドウに表示できる。 バッチファイルを使えば管理者として実行することもできる。 |
透明な領域の扱い | (機能なし) | 透明な部分を持つ画像を検索条件にして検索することが可能。 透過情報を持たない画像に対して無視したい範囲をマスク画像で指定することもできる。 |
OCR言語の切替 | import org.sikuli.script.TextRecognizer as TR Settings.OcrReadText = True Settings.OcrLanguage = "jpn" TR.reset() | tr = TextOCR.start() tr.setLanguage("jpn") SikuliX2.0.2ではさらに変更になっている。 (こちらを参照 ※2020/5/24追記) |
文字列での検索 | find(someText)で検索可能。 | findText()が使える。日本語で検索したいときは、OCR言語を日本語に切り替えてからfindText(u"漢字")のようにする。 findWork()やfindLine()が追加になる模様である。(※動作未確認) find(someText)はデフォルトでは無効。Settings.SwitchToTextと宣言してスイッチをONするとfind(someText)も使えるが、その場合はImageMissingが機能しなくなる。 |
Seleniumなどバインドされていないモジュールを使いたいとき | スクリプト内でload(jarファイル)を実行するとjarファイルに含まれるクラスをimportして使える。 | load()は使えなくなった。 「C:\Users\ユーザー名\AppData\Roaming\Sikulix\Extensions」にjarファイルを格納しておいてSikuliX IDEを起動すると、jarファイルに含まれるクラスをimportして使える。 |
SikuliX IDEのメッセージペインに出力するときに使うprintに渡す文字コード | UTF-8 デフォルトエンコーディングを指定するとき import sys reload(sys) sys.setdefaultencoding("UTF-8") | デフォルトエンコーディングを指定するとき import sys reload(sys) sys.setdefaultencoding("SHIFT_JISX0213" 2019/4/15(Build 283)からUTF-8に戻った。バグだった模様。 |
Appクラス | 使い方が変更になっている。 |
■SikuliX1.1.4で追加された機能
(1)画像マスク機能
検索に指定する画像(png形式の画像)は、これまでの通り矩形でキャプチャしたものですが、その画像の中で検索するときに無視したい範囲をマスクすることができます。
SikuliX IDEで[表示]-[Show thumbnails]をONにしているときは、Pattern().mask()の部分が画像表示に代わります。画像の右上の「M」の文字が、マスク指定をしていることを表しています。code1とcode2は画像1つ(背景が黒色の画像なら、画像1つでマスク指定ができます。 )、code3とcode4は検索画像とマスク画像の2つの画像を使っています。検索画像とマスク画像の2つの画像を使う場合、ピクセルサイズは同一にしなければなりません。([Show thumbnails]をONにしてもマスク画像がどんな画像なのか表示されないのが欠点です。)
【補足1】
透過情報を保持した画像を使って検索する場合は、マスク指定なしでfind(画像)とするだけで検索できます。SikuliX IDEで[Show thumbnails]をONにしているとき、透明部分が黒色で表示されるので、透明なのか黒色なのか判別できなくなります。(透明な画像を使ったスクリプト例はここを参照。)
【補足2】
透明な部分を持つ画像やマスク指定パターンを条件にして検索する場合は、最小類似度を高く(90%以上か?)しておかないと、誤検知する場合があるかもしれません。(検索対象画像に依存する現象かもしれませんが、まだよく理解できていません。)
【補足3】
透明な部分を持つ画像やマスク画像を生成する機能はSikuliX IDEには無いので、画像編集ソフトを使って作ります。
(2)findAll系の新しい機能
findAll()の戻り値は、マッチオブジェクトのイテレータで、イテレータを操作するために、hasNext()とnext()を使う必要がありました。SikuliX1.1.4から、マッチオブジェクトをリストで返す関数が各種追加になっています。
・findAllList:findAllと同様ですが、戻り値がマッチオブジェクトのリストです。
・getAll:findAllListと同じです。
・findAllByRow:findAllListの結果をY座標の小さい順(スクリーンの上から下)に並び替えたリストを返します。
・findAllByColumn:findAllListの結果をX座標の小さい順(スクリーンの左から右)に並び替えたリストを返します。
(3)OCR機能の使い方
日本語OCRを使いたいときは、ここから「jpn.traineddata」をダウンロードして「C:\Users\ユーザー名\AppData\Roaming\Sikulix\SikulixTesseract\tessdata」に格納しておきます。
※2018/9/8のNightly BuildからOCR言語の切替が使えるようになっています。
(4)[Run Selection]機能
SikuliX IDEのスクリプトエディタで連続した行の範囲を選択して、[Ctrl]+[Shift]+[r]キーを押すと、選択した範囲を部分的に実行することができます。
(1)1~6行を選択して[Ctrl]+[Shift]+[r]
(2)8~9行を選択して[Ctrl]+[Shift]+[r]
上記操作で、plus()の実行を1回だけ確認することができます。
■画像識別精度の比較
Windows10アクセサリにある「ペイント」の色指定タイルの部分を使って、SikuliX1.1.3とSikuliX1.1.4の画像識別精度を比較してみました。右上端の「紫」のタイルを検索条件画像に使って、どちらも最小類似度を95%に設定して行いました。
(1)SikuliX1.1.3の場合
マッチングプレビューでも4つ見つかりました。
(2)SikuliX1.1.4の場合
マッチングプレビューでも1つしか検出されていません。
同じ最小類似度でSikuliX1.1.4の方が絞り込みができているので、精度が上がっていると思われます。
■SikuliX1.1.4とSikuliX2.0.0の見かけの違い
(1)Javaのアイコンを使わなくなってる。
コメント
コメント一覧 (5)
ご指摘ありがとうございます。元に戻しました。
マスクを使ってみたいと思ってます。
以下の★部分が意図と異なる表示になっているようです。
ご確認をお願いします。
■SikuliX1.1.4で追加された機能
(1)画像マスク機能
~その画像の中で検索するときに無視した★い範囲をマスクすることができます。
直し方をご存知でしたら教えてください。
https://gyazo.com/8e31170fe27860b9560657fa3e3ca6d4
環境設定は以下の通りです。
https://gyazo.com/412e76512d13120b063e308653151553
このブログにコメントするにはログインが必要です。
さんログアウト
この記事には許可ユーザしかコメントができません。