-
Notifications
You must be signed in to change notification settings - Fork 193
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
recognition支持条件组合,例如同时满足ColorMatch和TemplateMatch才执行 #386
Comments
这种的话,template match 的 next 是 color match 和 回滚上一个任务。就可以了吧 |
您的意思是回滚回Task0是吗?但是这样的话,每一个这样的Task0都要写一个对应的Task1(否则无法正常回滚) 例如这样的一个任务: "启动游戏": {
"next": "确认当前在主界面",
"interrupt": "关闭弹窗"
}
"不断返回主界面": {
"next": "确认当前在主界面",
"interrupt": "点击返回键"
}
"确认当前在主界面": {
"recognition": ["TemplateMatch", "ColorMatch"], //假设这是个条件组
...
} 用回滚的话大概是写成: "启动游戏": {
"next": "确认当前在主界面-1-TemplateMatch",
"interrupt": "关闭弹窗"
}
"确认当前在主界面-1-TemplateMatch": {
"recognition": "TemplateMatch",
...
"next": ["确认当前在主界面-ColorMatch", "启动游戏"]
}
"不断返回主界面": {
"next": "确认当前在主界面-2-TemplateMatch",
"interrupt": "点击返回键"
}
"确认当前在主界面-2-TemplateMatch": {
"recognition": "TemplateMatch",
...
"next": ["确认当前在主界面-ColorMatch", "不断返回主界面"]
}
"确认当前在主界面-ColorMatch": {
"recognition": "ColorMatch",
...
}
不知道我有没有理解错您的意思,还是您觉得有更好的解决方式呢? |
custom recognition! |
custom recognition目前需要从python启动,打包也很麻烦,必须要pyinstaller,没法用MaaFramework自带的workflow了……可能要实现更复杂的功能确实需要custom recognition和custom action,整体上都往”高代码“靠一靠。但是条件组我感觉是个蛮常用的需求,要是能在低代码部分也实现就好了? |
回滚确实有点麻烦,但是我感觉组合识别会更复杂,要考虑的细节问题比较多。 例如 画面中有三个同样的图标,旁边各有一行字,我想用 TemplateMatch + OCR 如果设定一个大的 ROI 分别跑两个算法,那假如 TemplateMatch 只识别到两个结果,OCR 识别到三个结果,怎么把它们一一对应起来?以谁的识别结果去执行 action? 我感觉识别的问题应该从识别的角度解决,但我现在确实没想到什么好方法,或许可以针对原始问题本身,TemplateMatch 对颜色不敏感,简单的给 TemplateMatch 加个颜色要求的字段 |
确实,组合条件需要考虑的细节比较多。您说的最后那个方案我觉得(对我的需求来说)是可行的,为TemplateMatch加颜色要求字段,仅在TemplateMatch到的结果上加一个颜色判断就可以,也能解决颜色不敏感的问题。
类似这样? |
我的建议: "当前任务": {
"recognition": "xxx",
"next": [
"当前任务完成1",
"当前任务完成2",
"..."
],
"interrupt": [
"处于弹窗页面",
"点击功能列表",
"..."
]
}
"处于弹窗页面": {
"recognition": "xxx",
"action": "Click",
"next": [
"弹窗操作完毕,已返回点击功能列表的页面",
"弹窗操作完毕2",
"..."
],
"interrupt": [
"弹窗页面操作1",
"弹窗界面关闭"
]
}
|
关于返回主页面,我的处理是写一个通用的返回任务 "返回主界面": {
"next": [
"位于主界面1",
"位于主界面2",
"位于主界面3"
],
"interrupt": [
"关闭悬浮窗",
"点击返回按钮",
"加载中",
"加载中1",
"点击空白区域",
"其他特殊退出"
]
},
根据具体的任务,可在interface设置对应的override,调整顺序以便提高匹配概率 |
您好,关于您提出的两种模式,我都在我的任务链里面尝试了,可能是因为我的任务链设计搞得比较复杂,还是会出现问题(并且需要增加很多中间任务的编写),总之非常感谢您的建议! |
条件组合确实比较复杂,为TemplateMatch加颜色要求字段是目前比较好的方案。因此关闭本issue。 新的issue: #391 |
需求:希望recognition能支持条件组合,例如同时满足ColorMatch和TemplateMatch才算识别到。
场景:TemplateMatch匹配时基本靠灰度匹配,不考虑颜色;而ColorMatch又只考虑颜色;OCR只考虑文字。有时需要同时满足才能正确匹配到想要的图片。希望能够支持条件的组合(AND)。
例子:
希望匹配到的图片1:
![image](https://private-user-images.githubusercontent.com/8275836/375961520-33bc6bde-3637-407a-b130-58ae154ca958.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkzODM5MzMsIm5iZiI6MTczOTM4MzYzMywicGF0aCI6Ii84Mjc1ODM2LzM3NTk2MTUyMC0zM2JjNmJkZS0zNjM3LTQwN2EtYjEzMC01OGFlMTU0Y2E5NTgucG5nP1gtQW16LUFsZ29yaXRobT1BV1M0LUhNQUMtU0hBMjU2JlgtQW16LUNyZWRlbnRpYWw9QUtJQVZDT0RZTFNBNTNQUUs0WkElMkYyMDI1MDIxMiUyRnVzLWVhc3QtMSUyRnMzJTJGYXdzNF9yZXF1ZXN0JlgtQW16LURhdGU9MjAyNTAyMTJUMTgwNzEzWiZYLUFtei1FeHBpcmVzPTMwMCZYLUFtei1TaWduYXR1cmU9NzhjNTVjNmEyM2ZkOTFlNDY0NWFiN2EwYjM2MzU0YTgyOWJjNDc0MzgzY2Q2YzVlM2VmNmI5NzAyZDgwNzZkYSZYLUFtei1TaWduZWRIZWFkZXJzPWhvc3QifQ.iwhzb879_mRoeWYxDmwGtjr7t2KHqyV6uhjHsJ1TiJ4)
不应该被匹配到的图片2(弹窗后加上灰色蒙版,TemplateMatch分数仍然达0.99以上,OCR仍能正常识别到文字):
![image](https://private-user-images.githubusercontent.com/8275836/375961589-4295a3c0-9a06-4863-85d5-f4d4872644a9.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkzODM5MzMsIm5iZiI6MTczOTM4MzYzMywicGF0aCI6Ii84Mjc1ODM2LzM3NTk2MTU4OS00Mjk1YTNjMC05YTA2LTQ4NjMtODVkNS1mNGQ0ODcyNjQ0YTkucG5nP1gtQW16LUFsZ29yaXRobT1BV1M0LUhNQUMtU0hBMjU2JlgtQW16LUNyZWRlbnRpYWw9QUtJQVZDT0RZTFNBNTNQUUs0WkElMkYyMDI1MDIxMiUyRnVzLWVhc3QtMSUyRnMzJTJGYXdzNF9yZXF1ZXN0JlgtQW16LURhdGU9MjAyNTAyMTJUMTgwNzEzWiZYLUFtei1FeHBpcmVzPTMwMCZYLUFtei1TaWduYXR1cmU9NzQwODNmZGI5ZmI4YjVlNGZhNDQwZWYwNGQ4OWQ5YzMyZTJjODkyM2I2N2VlZTk4ODcyOTk1MjJlOTZjZDVhMCZYLUFtei1TaWduZWRIZWFkZXJzPWhvc3QifQ.vO1t28SRbJDWnSXH8hAFKfbT0aUafNYkVbDcnjT5wok)
尝试过仅使用ColorMatch方法,但某些情况会出错(如转场加载时会全白)。
如果支持多条件组合,例如要求同时满足TemplateMatch+ColorMatch,或OCR+ColorMatch,或ColorMatch+ColorMatch,就能够正常匹配图片1而不匹配图片2。
虽然“串联任务”在一定程度上可以实现本需求(如Task1匹配TemplateMatch,next Task2匹配ColorMatch),但是这样依然进入了Task1的流程。例如,如果Task0的next为Task1,并且设置了interrupt列表,则interrupt列表就不会再被执行了(正常匹配到了Task1)。
The text was updated successfully, but these errors were encountered: