[聊天] 接龙小游戏 自动查表器

楼主: 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