lovelive研究部吧 关注:4,755贴子:36,254
  • 6回复贴,共1

【数据收集工具&算法讨论】通过截图获取SMpt的数值和变化量

取消只看楼主收藏回复

大家好,我又来发没卵用的程序了


1楼2017-03-08 15:55回复
    我在日服吧看到有人在收集SMpt数据,吧友纷纷附上了截图。一时脑洞大开,于是花了几个小时时间构思并写了这个script来玩。
    需要安装的包:
    Python 3, PIL, tesseract, pytesseract


    2楼2017-03-08 15:57
    回复
      这个程序主要利用的是一个假设:所有分辨率的设备UI的相对比例都是一样的。这在日服是成立的:超过3:2范围的部分屏幕显示黑边。因此,获取有效部分相对容易,而这之后获取每个玩家的分数区域也就很简单了——按比例抠图就好。
      文字识别方面我使用了谷歌的tesseract库,因为相对简单而且效果还行。当然,在调用OCR库前要对图像做些许的处理,比如说锐化一下。
      tesseract识别出来的字符串有很多噪音。我们可以基于
      1. 出现的字符只可能是0-9,加减号、括号和pt这两个字母,进行过滤
      2. 假设赛后SMpt不会相差超过十倍(所以这个程序在有一个人在比完后还是0分的时候要跪)
      来进行处理。最后的结果还是相对可以接受的。


      3楼2017-03-08 16:02
      回复
        下面是测试数据集的一些样例:
        (注:贴吧会压图,要原版请到github源上下载)

        $ ./ocr.py test/test-ipad.png
        {"sanitized": [[22654, 169, 804272, 431], [23631, 48, 794332, 472], [23572, -73, 774473, 592], [22594, -47, 699730, 226]], "raw": [["22654pt", "(+169)", "804272", "431"], ["23631 pt", "(+48)", "794332", "472"], ["23572:\u201c", "(- 73)", "774473", "592"], ["22594;\u201d", "(-47)", "699730", "226"]]}
        得出的数据是sanitized那一项的
        [[22654, 169, 804272, 431],
        [23631, 48, 794332, 472],
        [23572, -73, 774473, 592],
        [22594, -47, 699730, 226]]

        $ ./ocr.py test/test-tieba-data.jpg
        {"sanitized": [[25001, 46, 1073078, 569], [24480, 41, 965042, 559], [23607, -36, 716435, 173], [23553, -50, 822266, 569]], "raw": [["25001pt", "(+46)", "1073078", "569"], ["24480pt", "(+41)", "965042", "559"], ["23607pt", "(-36)", "716435", "173"], ["23553pt", "(-50)", "822266", "569"]]}
        得出的数据是
        [[25001, 46, 1073078, 569],
        [24480, 41, 965042, 559],
        [23607, -36, 716435, 173],
        [23553, -50, 822266, 569]]


        4楼2017-03-08 16:05
        回复
          代码在这里:https://github.com/liaocm/SIF-ScoreMatchOCR
          这个程序只支持1080x720以上分辨率的截图,因为分辨率低的截图准确率惨不忍睹...
          什么,你觉得这么搞半天很麻烦,还不如人工输数字?那就对了,要不我干嘛说这程序没卵用啊所以说赶快加入数据站的数据收集计划吧
          不知道@jebwizoscar 在数据站中是否有统计SMpt方面的信息以方便建模?


          5楼2017-03-08 16:08
          回复
            代码在这里:github.com/liaocm/SIF-ScoreMatchOCR
            这个程序只支持1080x720以上分辨率的截图,因为分辨率低的截图准确率惨不忍睹...
            什么,你觉得这么搞半天很麻烦,还不如人工输数字?那就对了,要不我干嘛说这程序没卵用啊所以说赶快加入数据站的数据收集计划吧
            不知道@jebwizoscar 在数据站中是否有统计SMpt方面的信息以方便建模?


            6楼2017-03-08 16:16
            收起回复
              忘了@与后果


              来自iPhone客户端7楼2017-03-09 04:50
              回复