

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で起動します。

コメント