楼主:
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
电脑白痴的我 连怎样弄和用都不知道