autojs查找透明图

牙叔教程 简单易懂javascript

使用场景

查找图片中的透明按钮的位置java

效果展现

透明按钮是齿轮按钮和双人按钮,canvas

黄色矩形是找出来的位置markdown

41tmp.png1tmp.png2tmp.png3tmp.png

autojs版本

8.8.20-0网络

原理

观察图片, 能够明显的看到, 按钮的亮度是比周围高得多, 因此咱们能够查找图片中最亮的部分,工具

找到的大几率就是咱们要找的东西;学习

解决问题, 实事求是, 不一样的需求, 不一样的场景, 采用合适的方法;测试

若是此处的按钮, 明度不明显的话, 咱们就要观察图片, 找出咱们能够利用的特征,spa

好比颜色, 面积, 形状code

本教程使用的二值化, 来提取图片的轮廓,

有兴趣的话, 你们能够试试边缘检测, 提取出来的轮廓

边缘检测, 效果以下: 边缘检测.png

步骤

  1. 灰度
  2. 二值化
  3. 抠图
  4. 模板匹配

二值化的可视化

为了找到合适的二值化阈值, 须要通过屡次测试, 因此专门写了一个滑块来调整阈值,

通过屡次测试, 这几张图片的最佳阈值在175 二值化.png

提升找图效率

找图我测试, 效率挺高的,

我专门用console.time打印了代码的运行时长,

脚本总时长: 2555ms

保存文件两次, 时长分别为: 1131ms, 1104ms

也就是说, 若是不保存文件, 那么实际上代码执行时间: 320ms

另外, 若是找图的时候, 能够在不影响效果的状况下,

能够对图片进行缩放, 图片越小, 找图效率越高,

模板图片是越大越好, 这样滑窗的次数会少不少,

滑动窗口的次数少了, 找图速度就快了

模板图片的选择

一开始我是把齿轮的所有都截图了下来, 可是有的图片二值化后找不到齿轮,

而后我就截取了特征最明显的部分, 也就是相对的稳定的特征

原来的齿轮 齿轮.png

特征稳定的齿轮局部 小齿轮.png

双人 双人.png

代码讲解

1. 灰度二值化
runtime.images.initOpenCvIfNeeded();
importClass(org.opencv.core.Mat);
importClass(org.opencv.core.CvType);

let imgPath = "./res/4.jpg";
imgPath = files.path(imgPath);
let img = images.read(imgPath);
let grayImg = images.grayscale(img);
let threshold = 175;
let thresholdImg = images.threshold(grayImg, threshold, 255);
复制代码
2, 抠图

我直接用的ps抠图, 电脑自带的画图也同样能够,

只要保证抠图能用, 用什么工具均可以

3. 模板匹配
let matchingResult = images.matchTemplate(thresholdImg, templateGray, {
  threshold: matchTemplateThreshold,
});
复制代码
4. 画矩形
canvas.drawRect(left, top, left + templateWidth, top + templateHeight, paint);
复制代码

声明

部份内容来自网络 本教程仅用于学习, 禁止用于其余用途

相关文章
相关标签/搜索