Fix: [CN,EN,JP,TW] GET_SHIP was incorrectly identified.#3830
Fix: [CN,EN,JP,TW] GET_SHIP was incorrectly identified.#3830zuak110 wants to merge 4 commits intoLmeSzinc:devfrom
Conversation
这个暗色区域是否会因为具体舰船而变化?比如金船的底色是黄的 如果要识别非纯白色的区域,或许可以参考一下IDLE的识别 |
对的,由于各舰船底色不同,导致这部分暗色区域会因为底色不同而发生一些颜色的变化。 例如在我的测试中暗色区域摘出了如下颜色: 考虑识别区域为3X30的像素空间,有影响的暗色区域为3X3,用CIE76计算平均色差,不同颜色舰船的整体色差控制在25%以内,平均色差为20%。 之所以考虑这种解决方法也是因为按钮本身对底色做了一次不透明处理,使得不同底色对这部分区域的影响不会特别明显,不然那就会出现识别紫船不识别蓝船的尴尬情况。 我个人测试了后是不影响各颜色舰船的识别的,但是我也担心有意外情况出现,所以尽可能将暗色区域放的比较小,只要偏移纯白色一丁点就可以了。
哈哈哈好的好的 |
|
具有背景颜色的区域用来算平均颜色是不严谨的,不要这样做。 |
同意。 提交PR前考虑过同时识别两处位置进行排除,也就是第二种方法,但由于调用过多做这种代码上的修改需要极其谨慎。 关于提到的这两种改法,我有一些考虑: 方法1:对左侧按钮进行模板匹配,但必须单独处理Meta结晶的界面(按钮位置与普通船不同); 你觉得哪种方法更合适一些? |

描述
在目前的后宅爱心与家具币收集逻辑中,需要先点击“管理”再退出以得到后宅全部视野。
但是当程序进入后宅管理页面后(
[dorm.py:L493] self.ui_goto(page_dorm, skip_first_screenshot=True)),会错误识别到GET_SHIP导致程序出错无法继续工作。问题分析
当前版本中 GET_SHIP 使用屏幕右下角的纯白色块来识别是否获得了船,后宅管理页面下方也为纯白色,这导致使用
ui_goto()函数进入后宅页面后,识别到了 GET_SHIP,进而触发了以下代码后出现错误。解决方法
更换了GET_SHIP的识别方案。
测试
采用自建测试集,分为了
有新船和无新船两部分截图,分别进行测试。测试了各个稀有度(白、蓝、紫、金、彩、Meta)的建造收获界面,均可以正常识别出GET_SHIP,未影响原有功能。
测试了常用的其他界面,均未识别出GET_SHIP,符合预期。
可能存在的问题
仅测试了国服相关界面,未测试其他服务器,同时自建测试集无法保证测试的全面性。
TODO
由于新版本增加了一键收集功能,接下来打算修改收集逻辑,通过识别新按钮直接进行爱心和家具币的收集。
与此问题相关的Issues
#3760 #3787 本人也出现了此问题