autojs查找透明图

简介: 牙叔教程 简单易懂

牙叔教程 简单易懂


使用场景


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


效果展示


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


黄色矩形是找出来的位置


autojs版本


8.8.20-0


原理


观察图片, 可以明显的看到, 按钮的亮度是比周围高得多, 所以我们可以查找图片中最亮的部分,


找到的大概率就是我们要找的东西;


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


如果此处的按钮, 明度不明显的话, 我们就要观察图片, 找出我们可以利用的特征,


比如颜色, 面积, 形状


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


有兴趣的话, 大家可以试试边缘检测, 提取出来的轮廓


边缘检测, 效果如下:

步骤


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


二值化的可视化


为了找到合适的二值化阈值, 需要经过多次测试, 所以专门写了一个滑块来调整阈值,


经过多次测试, 这几张图片的最佳阈值在175



提高找图效率


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


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


脚本总时长: 2555ms


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


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


另外, 如果找图的时候, 可以在不影响效果的情况下,


可以对图片进行缩放, 图片越小, 找图效率越高,


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


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


模板图片的选择


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


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


原来的齿轮



特征稳定的齿轮局部



双人



代码讲解


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);


声明

部分内容来自网络

本教程仅用于学习, 禁止用于其他用途

相关文章
|
Android开发
Autox.js 脚本开发环境搭建,从案例到打包apk(详细流程)
Autox.js 脚本开发环境搭建,从案例到打包apk(详细流程)
4747 0
|
Python Windows
win64系统安装32位的python解释器和打包成exe程序
本文说明了在win64系统环境下,如何安装32位的python解释器,同时对32位虚拟环境下运行的python程序进行打包,将其打包成可执行的exe程序,以图文相结合的方式记录了操作步骤,供大家参考。
1191 0
|
测试技术 Android开发
autojs横屏截图的正确姿势
牙叔教程 简单易懂
3576 0
|
数据可视化 数据挖掘 区块链
《区块链公链数据分析简易速速上手小册》第4章:交易数据分析(2024 最新版)(上)
《区块链公链数据分析简易速速上手小册》第4章:交易数据分析(2024 最新版)(上)
667 0
|
10月前
|
前端开发 NoSQL Java
不同类型 Java 项目实操内容详解与案例分析
本文介绍了4个Java技术栈项目实操方案:1)基于Spring Cloud Alibaba的微服务电商平台,包含Nacos服务注册、商品服务和网关配置;2)采用Spring WebFlux的响应式博客系统,实现MongoDB数据操作和WebFlux控制器;3)基于Camunda的低代码平台,涵盖流程建模和任务处理;4)使用Flink的实时数据分析平台,实现Kafka数据流处理和ClickHouse存储。每个项目都提供了核心技术栈、关键实现步骤和代码示例,涵盖微服务、响应式编程、工作流引擎和大数据处理等现代J
188 0
|
Web App开发 缓存 监控
前端性能优化实战:从代码到部署的全面策略
前端性能优化实战:从代码到部署的全面策略
378 1
|
负载均衡 应用服务中间件 nginx
Nginx的6大负载均衡策略及权重轮询手写配置
【10月更文挑战第9天】 Nginx是一款高性能的HTTP服务器和反向代理服务器,它在处理大量并发请求时表现出色。Nginx的负载均衡功能可以将请求分发到多个服务器,提高网站的吞吐量和可靠性。以下是Nginx支持的6大负载均衡策略:
1126 7
|
安全 NoSQL Ubuntu
【项目简记】逆向工程裸机内核镜像
【项目简记】逆向工程裸机内核镜像
302 0
|
存储 人工智能 异构计算
清华&哈工大提出极限压缩方案:1bit量化,能力同时保留83%
【2月更文挑战第22天】清华&哈工大提出极限压缩方案:1bit量化,能力同时保留83%
475 1
清华&哈工大提出极限压缩方案:1bit量化,能力同时保留83%