作者:
gR7P4zXH (tpn7gpdx)
2020-03-08 08:45:21覺得小遊戲查表好麻煩,做了一個查表器
附上人權
http://i.imgur.com/vzuo7ru.jpg
# 實驗成果
v1
https://youtu.be/IcirpEYB2lY
v2,感謝小精靈改scrcpy
https://youtu.be/Nb9cCh4DmgY
# source code
aHR0cHM6Ly9wYXN0ZWJpbi5jb20vajhNY3F4RGE=
# 實驗環境
- Intel(R) Core(TM) i5-6200U CPU @ 2.30GHz
- 12G RAM
- MX500 SSD
- Ubuntu 19.10
# 辨識九宮格圖示
OpenCV提供大量函式,為此我們使用了 `matchTemplate` 辨識圖示,整體流程如下
1. 切割原始圖片成單張圖示(icon),大小為106x106px
2. 調整大小至78x78px
3. 用 `matchTemplate` 比對148張既有圖示,排序 `min_val`,找出最大值所對應的圖
示和ID

得益於Profiling工具的日新月異,我用cProfile分析單執行緒的 python script,發現
最耗時的地方位於`templateMatching`,足足佔了整體執行時間97%‧
```bash
~$ python3 -m cProfile -s tottime ./tmp.py
0.7606322765350342
325680 function calls (318751 primitive calls) in 1.289 seconds
Ordered by: internal time
ncalls tottime percall cumtime percall filename:lineno(function)
1287 0.741 0.001 0.741 0.001 {matchTemplate}
28/17 0.162 0.006 0.240 0.014 {built-in method
_imp.create_dynamic}
280 0.045 0.000 0.045 0.000 {built-in method marshal.loads}
2 0.041 0.020 0.041 0.020 {imread}
```
### 全彩轉灰階
試著將全彩圖示轉換成灰階再進行比對
```bash
~$ python3 -m cProfile -s tottime ./tmp.py
0.2725179195404053
326034 function calls (319105 primitive calls) in 0.811 seconds
Ordered by: internal time
ncalls tottime percall cumtime percall filename:lineno(function)
1287 0.256 0.000 0.256 0.000 {matchTemplate}
```
看的出 maximum overhead 還是在`templateMatch`,但總執行時間足足少了65%‧
### 縮小圖示再比對
將兩邊要比對的78x78px縮小至26x26px,於是`matchTemplate`讓出寶座,整體執行時間
更是來到 0.05s(-80%),圖示辨識率也還是維持100%。
```
0.05796694755554199
326071 function calls (319142 primitive calls) in 0.613 seconds
Ordered by: internal time
ncalls tottime percall cumtime percall filename:lineno(function)
28/17 0.153 0.005 0.234 0.014 {built-in method
_imp.create_dynamic}
280 0.046 0.000 0.046 0.000 {built-in method marshal.loads}
2 0.043 0.022 0.043 0.022 {imread}
1287 0.042 0.000 0.042 0.000 {matchTemplate}
1175/1120 0.021 0.000 0.073 0.000 {built-in method
builtins.__build_class__}
```
為了減少執行時間,我們也測試圖片大小和辨識準確率關係,程式有做一些改動(印出正
確率、存測試資料),下方數據只是作為 Image size 的選取依據並非實際執行時間。測
試腳本如下
```bash
for i in `seq 78 -2 1`;do icon_size=$i python3 tmp.py; done;
```
只用一張遊戲畫面圖片做測試
icon size | elapsed time (sec)| accurate rate %)
作者:
KParmy (KParmy)
2020-03-08 08:52:00看不懂你在幹嘛 但好像很厲害 推一下
作者:
ikaros35 (墮落的ikaros)
2020-03-08 08:53:00我做研究都沒那麼認真 跪了
作者:
qni1104 (qni)
2020-03-08 09:07:00這技術用在遊戲上,我只能跪了謝謝大大造福群眾
不好意思請教一下,你在辨識九宮格圖示部分,是使用螢
作者: shaodw791017 (小鳥遊米香) 2020-03-08 09:11:00
?
作者:
CYL009 (MK)
2020-03-08 09:11:00我今天流量夠了 該睡覺了
作者: askye546388 (東北季風) 2020-03-08 09:11:00
看起來很厲害的樣子
作者:
KMSNY (MSN+KY)
2020-03-08 09:15:00很好 明天來上班
作者:
aha8877 (Ha)
2020-03-08 09:41:00先推,免得其他人以為我看不懂
作者: x8s8x8s8x (Uuason) 2020-03-08 09:57:00
偶先推
作者:
dajon (大叔你哪位)
2020-03-08 10:02:00所以是螢幕辨識+按鍵精靈嗎
作者: Incredible99 2020-03-08 10:03:00
看不懂你在幹嘛 不過你之後要去so-net?
作者:
crazycy (LCY)
2020-03-08 10:09:00這不就外掛...
作者:
felixden (cheny)
2020-03-08 10:12:00看不懂
作者:
Tamama56 (袴田日å‘)
2020-03-08 10:13:00先推
請問可以把py檔放github嗎 想clone下來好好研究一下
作者:
mifire (Kaze)
2020-03-08 10:17:00sonet:你要來我這裡報到了嗎
作者: zodhk01054 (sipe) 2020-03-08 10:23:00
不懂,先推再說
作者:
a890324 (蟲蟲)
2020-03-08 10:31:00哇靠 文組看不懂啊
作者:
sweetmiki (只有初音 沒有未來)
2020-03-08 10:45:00我覺得你在做壞事 但我看不懂
作者:
wsttuub (ç« éš)
2020-03-08 11:13:00.......看不懂但先跪再說
作者:
gsfate (算了吧...放了吧)
2020-03-08 11:17:00這算外掛嗎XD
作者:
nutta (nutta)
2020-03-08 11:20:00先推免得
作者:
roc074 (安安)
2020-03-08 11:28:00這跟去so-net沒一點關係,原po應該會去做影像辨識的公司吧
作者:
bomda (蹦大)
2020-03-08 11:38:00這就是外掛啊
作者:
paul31788 (iloveyou601)
2020-03-08 11:42:00推
作者: CVTaihouKai 2020-03-08 11:44:00
第1行不就是寫查表器了
作者: frosagen2018 2020-03-08 12:18:00
我也是這麼想的
作者:
DanielHAO (OAHleinaD)
2020-03-08 12:18:00跟我想得差不多
作者: x80307 (肥神不是神) 2020-03-08 12:23:00
窩不知道 你再說蛇某
作者:
enders346 (enders346)
2020-03-08 12:47:00太強啦
作者:
kingoflag (kingoflag)
2020-03-08 13:04:00我需要git網址 為了研究
作者:
js850604 (jack0604)
2020-03-08 13:10:00玩公連先學影像辨識
作者: he01023815 (Mr.K) 2020-03-08 13:20:00
嗯嗯跟我想的差不多
作者:
sismiku (Simiku)
2020-03-08 13:29:00IOTA凸了木有發錢辣
作者:
joe1211 (島風我老婆)
2020-03-08 14:02:00這山小...
作者: littlestar66 2020-03-08 14:16:00
嗯嗯 跟我當初想的一樣
作者:
Raynor (Dr.K)
2020-03-08 15:25:00source code 呢? (敲碗
作者: NoLimination (啊啊啊啊) 2020-03-08 15:48:00
說人話
請問有哪些教授有在做upscale的嗎?滿有興趣的
作者:
asteea (Asteea)
2020-03-08 17:14:00...我竟然看的懂 推有心去寫 又有心分享成果
scale前可以把邊界剪掉 外面那一圈白框對辨識沒幫助
作者:
mose56789 (ä»‹æ„æˆ‘骰需嗎)
2020-03-08 17:47:00瑟瑟發抖
作者:
taikobo (勉強になるなぁ...)
2020-03-08 18:17:00有看有推
作者:
b940315 (鮪魚堡)
2020-03-08 19:17:00感覺會被當外掛 還好我打玩了
作者: to9527 (阿德) 2020-03-09 00:03:00
求github XD
作者:
MiRRorX (o(〒﹏〒)o)
2020-03-09 08:41:00果然等著就有神人,太猛了,求站內codeXD
作者: stocking0 (stocking0) 2020-03-10 11:07:00
電腦白痴的我 連怎樣弄和用都不知道