LmeSzinc/StarRailCopilot

仪器整理任务#1 词条识别

LmeSzinc opened this issue · 0 comments

仪器整理功能的拆分小任务

  1. 通过opencv操作,给出词条名称和数值的位置
  2. 增加词条模板图片,使用模板匹配识别词条名称
  3. 对数值部分进行单行ocr
群聊天记录

吕明珠LmeSzinc在轻轨 2024/7/8 23:45:29
继续之前的话题

吕明珠LmeSzinc在轻轨 2024/7/8 23:46:44
我之前跟那些整理视频,跟着手动操作了一次

吕明珠LmeSzinc在轻轨 2024/7/8 23:48:12
发现他们给的整理条件实际非常复杂,游戏内分解的副词条筛选可能要排列组合筛很多次才能达到目的

吕明珠LmeSzinc在轻轨 2024/7/8 23:51:12
我的想法是,在库存界面仅筛套装,然后挨个扫描,标记废弃

吕明珠LmeSzinc在轻轨 2024/7/8 23:52:14
这样有了词条之后,用程序内的条件判断,方便实现复杂逻辑

吕明珠LmeSzinc在轻轨 2024/7/8 23:56:50
所以下一步的第一个小任务就是,识别这个界面

吕明珠LmeSzinc在轻轨 2024/7/8 23:58:09
这里场景单一,就可以进行优化

吕明珠LmeSzinc在轻轨 2024/7/9 0:00:33
首先就是ocr不能使用det模型,仅对单行文字rec,det用opencv去实现

吕明珠LmeSzinc在轻轨 2024/7/9 0:02:25
背景很干净嘛,所以 (图片) - (高斯模糊后的图片),opencv闭操作,就能把文字框出来了

吕明珠LmeSzinc在轻轨 2024/7/9 0:04:27
然后词条的名称其实是固定的,用模板匹配

吕明珠LmeSzinc在轻轨 2024/7/9 0:05:09
就是把“暴击伤害”几个字作为图片去识别,而不是通过ocr

吕明珠LmeSzinc在轻轨 2024/7/9 0:07:19
普通opencv操作大概比ocr快1到两个数量级,所以要快就要尽量避免ocr

hex((lambda: 0xEE0000)()) 2024/7/9 0:07:39
数字直接findContours分割,对每一位模板匹配

Antecanis 2024/7/9 0:08:28
6

如来 2024/7/9 0:08:35
有一种手动实现ocr的感觉(

hex((lambda: 0xEE0000)()) 2024/7/9 0:09:14
对于不同字号的相同字体,用同一组模板,缩放一下图片就行,缩放比例跑个循环就能看出来

蠹翔子 2024/7/9 0:09:37
还需要数值部分?

蠹翔子 2024/7/9 0:09:45
强化流程都放到src吗

吕明珠LmeSzinc在轻轨 2024/7/9 0:09:51
我是不希望切字的,ocr对单行的鲁棒性其实非常高

吕明珠LmeSzinc在轻轨 2024/7/9 0:10:59
切字我已经可以预想到未来会有一堆切不干净,切完了匹配成另一个字的事情
因为图片不是无损的

hex((lambda: 0xEE0000)()) 2024/7/9 0:11:05
数字每一位自己都连在一起,切起来没问题;汉字就没法切了

吕明珠LmeSzinc在轻轨 2024/7/9 0:12:00
对,只是看词条筛胚子的话,数值部分都不需要

吕明珠LmeSzinc在轻轨 2024/7/9 0:13:21
这是第一个任务了