Sikuliで画像認識すぐにスタートしないのでAutoHotkeyに変えてみました
ファイルに日本語あるとOpenエラー(UnicodeDecodeError)
UnicodeDecodeError:’cp932′ code can’t decode byte 0xef in position 182: illegal multibyte sequence
日本語文字含まれているときは、エンコード指定してファイルを開かないといけないみたいです。
解決策としてしたこと:
f = open(‘guiChange.au3′,’r’,encoding=’utf-8′)
ファイルを読む時、エンコードを指定するとうまくいきました。
ファイルを読み込んで変数に入れる
with open('.\sikuli\sikuli.py') as f: s = f.read() print(s)
.\sikuli\sikuli.py = sikuli\sikuli.py は同じです。
for i in range(2) for ループ
for i=0 ~~ ではない
range(2) 2回のみ(0,1) 012ではない
変数に「複数行の文字列」
s = ”’ ~~~
~~~
~~~ ”’
~~~
~~~ ”’
Python 3 の正規表現で文字列抜き出す
x = re.search("(?<=\").*(?=\")",s)
re.search() うまくいきますが、re.match()はうまく行かない
とりあえず動いたコード
import re import sys, cv2 x = "xxx.png" s_add = ''' ;----------------------------------------- ;画像検索 ファイル名””イラナイ WinGetPos,,, W, H, A ImageSearch, x, y,0,0, %%W%%, %%H%%, *50 %s ;見つけた画像の左上の座標 MouseClick, L, X+%d, Y+%d, 1 Sleep,300 ''' s_change = "" f = open('sikuli\sikuli.py') for i in range(3): s = f.readline() getName = re.search("(?<=\").*(?=\")",s) imgName = "sikuli\%s" %(getName.group()) #x = re.match(".*",s) if "click" in s: # 対象画像読み込み img = cv2.imread(imgName,0) # 画像の大きさを取得 height, width = img.shape[:2] #print("width: " + str(width)) #print("height: " + str(height)) s_change = s_change + s_add % (getName.group(),width/2,height/2) print(s_change) f.close
(base) F:\studyData\Autohotkey\gas_autoHot>python sikuli_hotkey.py > test.ahk
コマンドラインで「test.ahk」に出力してます。
先頭に:
#3::
を追加
これで、win+3で起動します。
コメント