在Hamibot中找图函数(images.findImage)使用实战用法(没认证过写不了专栏)

已存档

首先贴我的语法:
var img = images.load('https://xxxx.png');//这个是找图模板传的网图url

var p = images.findImage(captureScreen(),img,{
threshold: 0.8,
});
// log('当前找图'+p);
if (p) {
click(p.x1.05,p.y1.05);//点击坐标
toastLog('找到了:' + p);
} else {
toastLog('未找到');
}

问题一:相信很多小伙伴都试过自己截图保存模板,然后拿来找图找不到坐标
解决方案:这里推荐的方法,通过airtest 工具里面的touch工具截图保存到本地,然后上传成网络URL 这样上传的模板 识别率90%

问题二:识别成功后的坐标点击无效,原因:该函数返回的是模板左上角坐标
解决方案1:截图从模板中间往右下角截图
解决方案2:像我这样返回的X,Y坐标*1.01

如风
1
· 1 年前

回答

如风
1
· 1 年前

没有回复的功能,就直接在下方补充吧,昨天研究了下,我目前网络图片存放在https://zhaotu.me/这个网站,可以直接用url来识别,封装一个根据字段返回URL代码如下:
//封装返回识别模板图片URL
str 就是从配置中传入下面的(a,b)
function HeroUrl(str) {
const heroes = {
'a': 'https://pic.zhaotu.me/xxx.png',
'b': 'https://pic.zhaotu.me/xxx.png'
};
if(heroes[str] != null){
return heroes[str];
// toastLog('匹配到URL:'+heroes[str]);
}
else{
toastLog('当前:【'+str+'】配置不存在,请联系开发者');
return [];
}
}

再来个调用识别点击坐标的方法:
//封装图像识别方法,识别成功点击坐标,没有识别成功返回null
function Imagerecognition(str) {
var img = images.load(HeroUrl(str));
var p = images.findImage(captureScreen(),img,{
threshold: 0.7,
});
log('当前【' + str + '】坐标'+p);
if (p) {
click(p.x,p.y);
toastLog('选择【' + str + '】');
return p;
} else {
return [];
}
}

1、坐标偏移量问题,感谢指正,建议是截图截模板中间位置,这样找图的坐标随便偏移也是在点击中心点附近~~
2、可以打开手机设置里的 指针位置,每次点击都会有坐标展示出来

2
0
神秘机师
247
· 1 年前

图片也可以用 base64 直接放在脚本里

ps: 明天会取消专栏发布要求

可以发布专栏了

0
0
BATU1579
415
· 1 年前

偏移量还是得具体问题具体分析,有可能按钮形状不规则,有可能会按到空白的地方。

0
0