[聊天] 接龍小遊戲 自動查表器

作者: 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
![](https://i.imgur.com/tATMR9t.png)
得益於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
我做研究都沒那麼認真 跪了
作者: adamacon (飛俠ㄚ達)   2020-03-08 08:56:00
你的指導教授知道你在作這種東西嗎?
作者: qni1104 (qni)   2020-03-08 09:07:00
這技術用在遊戲上,我只能跪了謝謝大大造福群眾
作者: Jongkook (能力者)   2020-03-08 09:09:00
三小= =
作者: r22742557 (笨柏柏)   2020-03-08 09:10: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
很好 明天來上班
作者: amsterdamDK (amsterdam)   2020-03-08 09:21:00
三小。。
作者: aha8877 (Ha)   2020-03-08 09:41:00
先推,免得其他人以為我看不懂
作者: honey4617912 (h.4)   2020-03-08 09:48:00
嗯嗯我也是這麼想的
作者: x8s8x8s8x (Uuason)   2020-03-08 09:57:00
偶先推
作者: dajon (大叔你哪位)   2020-03-08 10:02:00
所以是螢幕辨識+按鍵精靈嗎
作者: sakuravivio (薇薇歐)   2020-03-08 10:03:00
先推,裝懂
作者: Incredible99   2020-03-08 10:03:00
看不懂你在幹嘛 不過你之後要去so-net?
作者: crazycy (LCY)   2020-03-08 10:09:00
這不就外掛...
作者: Tiamat6716 (ティアマト)   2020-03-08 10:09:00
科技的力量
作者: felixden (cheny)   2020-03-08 10:12:00
看不懂
作者: Tamama56 (袴田日向)   2020-03-08 10:13:00
先推
作者: otakuxavier (MAJAJA)   2020-03-08 10:17:00
請問可以把py檔放github嗎 想clone下來好好研究一下
作者: mifire (Kaze)   2020-03-08 10:17:00
sonet:你要來我這裡報到了嗎
作者: zodhk01054 (sipe)   2020-03-08 10:23:00
不懂,先推再說
作者: Terry1984 (puppy)   2020-03-08 10:24:00
太神啦
作者: pionlang5566 (pion)   2020-03-08 10:29:00
有沒有打算放在 github 開源
作者: a890324 (蟲蟲)   2020-03-08 10:31:00
哇靠 文組看不懂啊
作者: pionlang5566 (pion)   2020-03-08 10:33:00
用 numba 會比較快嗎 <-出張嘴
作者: loltrg42972 (Rui)   2020-03-08 10:33:00
科技始終來自人性
作者: rhythm7321 (rhythm7321)   2020-03-08 10:44:00
推 如果能找想要的押韻就更猛了
作者: sweetmiki (只有初音 沒有未來)   2020-03-08 10:45:00
我覺得你在做壞事 但我看不懂
作者: smart0eddie (smart0eddie)   2020-03-08 10:53:00
姆咪
作者: shinobunodok (R-Hong)   2020-03-08 11:01:00
現在打電動都要這麼硬派寫實喔
作者: wsttuub (ç« é­š)   2020-03-08 11:13:00
.......看不懂但先跪再說
作者: dend930037 (揮風)   2020-03-08 11:17:00
你的指導教授知道這件事嗎
作者: gsfate (算了吧...放了吧)   2020-03-08 11:17:00
這算外掛嗎XD
作者: nutta (nutta)   2020-03-08 11:20:00
先推免得
作者: qwert65732 (今天發U文了嗎)   2020-03-08 11:26: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行不就是寫查表器了
作者: ptgeorge2 (左輪小手槍)   2020-03-08 12:11:00
我只是想打手槍,你給我看這個= =
作者: frosagen2018   2020-03-08 12:18:00
我也是這麼想的
作者: DanielHAO (OAHleinaD)   2020-03-08 12:18:00
跟我想得差不多
作者: x80307 (肥神不是神)   2020-03-08 12:23:00
窩不知道 你再說蛇某
作者: bightp36936 (bightp36936)   2020-03-08 12:44: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
玩公連先學影像辨識
作者: abjeffop (建)   2020-03-08 13:17:00
嗯嗯 跟我當初想的一樣 謝謝付諸行動
作者: he01023815 (Mr.K)   2020-03-08 13:20:00
嗯嗯跟我想的差不多
作者: sismiku (Simiku)   2020-03-08 13:29:00
IOTA凸了木有發錢辣
作者: joe1211 (島風我老婆)   2020-03-08 14:02:00
這山小...
作者: littlestar66   2020-03-08 14:16:00
嗯嗯 跟我當初想的一樣
作者: powerkshs (氣質斯文讀書人)   2020-03-08 14:25:00
你的got hub勒
作者: mikeneko (三毛貓)   2020-03-08 14:31:00
講中文可以嗎
作者: ruler76818 (阿鬼)   2020-03-08 15:09:00
python。ai辨識
作者: Raynor (Dr.K)   2020-03-08 15:25:00
source code 呢? (敲碗
作者: NoLimination (啊啊啊啊)   2020-03-08 15:48:00
說人話
作者: duncan1315 (duncan1315)   2020-03-08 16:13:00
請問有哪些教授有在做upscale的嗎?滿有興趣的
作者: zax5566x2 (Shad0w)   2020-03-08 16:15:00
請問paper哪裡可以找到
作者: dkchronos (秋雨)   2020-03-08 17:03:00
我需要網址,為了研究用途。
作者: asteea (Asteea)   2020-03-08 17:14:00
...我竟然看的懂 推有心去寫 又有心分享成果
作者: lionel20002 (遥かなソラ)   2020-03-08 17:43: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
作者: KaiKaiGod (凱凱神)   2020-03-09 00:35:00
私!
作者: y124421473 (ˊ_>ˋ)   2020-03-09 07:58:00
你贏了...
作者: MiRRorX (o(〒﹏〒)o)   2020-03-09 08:41:00
果然等著就有神人,太猛了,求站內codeXD
作者: kevin801117 (竹竿)   2020-03-10 08:54:00
太神拉 要是我會還是懶得做
作者: stocking0 (stocking0)   2020-03-10 11:07:00
電腦白痴的我 連怎樣弄和用都不知道
作者: eric910005 (kyo不是京子)   2020-03-10 21:23:00
傻眼

Links booklink

Contact Us: admin [ a t ] ucptt.com