萌新求教,这是怎么不执行的?
var result =images.findImageInRegion(captureScreen(), AiImg,{threshold:0.9,max:1,region: [400, 500, 150, 150]});//比较图片后
var i = result.best(); //返回相似度最高的结果
toastLog("i=" + i); //打印i
var m = i.match.similarity; //赋值给变量var
toastLog("m=" + m);
if(m > 0.9){
toastLog("执行成功"); //没有这个打印,感觉是赋值出问题了
}
赋值给变量i的时候我弄了打印
打印结果是 i=Match{point{400.0,500.0},similarity=1.0}
讲道理变量用match.similarity是能把1.0赋值给m的
然后m>0.9 会打印执行成功
但是现在m的打印出不来,执行成功的打印也出不来。
这啥毛病啊???
回答
感觉大大您好像用错方法了,文档当中说 images.findImageInRegion()
函数返回的是 Point 对象, images.matchTemplate() 方法的返回值类型才是 MatchingResult
对象。原文在这里:
找图。在大图片 img 中查找小图片 template 的位置(模块匹配),找到时返回位置坐标(Point),找不到时返回 null 。
(从找图复制来的, 因为文档里说 images.findImageInRegion()
是找图的简便用法)
大大可以试试用 ts 的类型检查,应该能更方便的开发。hamibot-types 可以提供代码补全和文档速览(添加一下设置 js 也能用)。如果还嫌麻烦的话也可以用 VS Code 插件 配合模板快速开始。
能找到的,这个方法会把找到的图信息生成Match对象。方法里有选取范围,数量、相似度等参数。我现在遇到的问题是Match里的相似度拿不出来。
我的打印结果里面的point{400.0,500.0}就是找到的图片的位置