自动发帖软件
标题:
AIWROK软件找图__方法小汇集
[打印本页]
作者:
发帖软件
时间:
14 小时前
标题:
AIWROK软件找图__方法小汇集
5.jpg
(220.27 KB, 下载次数: 0)
14 小时前
上传
6.jpg
(249.23 KB, 下载次数: 0)
14 小时前
上传
7.jpg
(250.3 KB, 下载次数: 0)
14 小时前
上传
// 第一种方法: 定义图像查找函数(参数顺序:查找区域,模板图像,相似度)
function 查找图像(searchRegion, templateImage, similarity) {
// 获取屏幕截图并转换为Mat(注意尺寸参数需与实际设备匹配)
var mat = screen.screenShot(720, 1280, 0).getMat();
// 在指定区域内进行模板匹配
var result = opencv.templateMatch(mat, [templateImage], similarity, searchRegion, true);
// 处理结果
if (result) {
var target = result[0].getRealRect();
auto.clickPoint(target.getCenterX(), target.getCenterY());
return true;
}
return false;
}
// 使用示例:
// 1.定义查找区域(相对坐标[x1,y1,x2,y2])
var 查找区域 = [0.3524, 0.3115, 0.4253, 0.3555]; // 查找区域的左上角和右下角相对屏幕的坐标
// 2.获取模板图像(ES5兼容写法)
var 全屏截图 = screen.screenShotFull(); // 获取全屏截图
var 模板图片 = 全屏截图.cutImagePercent( // 从全屏截图中裁剪出模板图像
查找区域[0], // x1
查找区域[1], // y1
查找区域[2], // x2
查找区域[3] // y2
).toBase64(); // 将裁剪出来的图像转换为Base64编码
全屏截图.recycle(); // 释放全屏截图资源,避免内存泄漏
// 3.执行查找(参数顺序:区域,模板,相似度)
// 如果在指定的查找区域内找到了与模板图像相似度达到0.8的目标,则自动点击该目标的中心坐标,并返回true
if (查找图像(查找区域, 模板图片, 0.8)) {
printl("操作成功");
} else {
printl("未找到目标");
}
//第二个方法, 标准遍历找图函数
function 遍历找图(配置参数) {
/* 参数说明
配置参数 = {
模板区域: [x1,y1,x2,y2], // 必填,截图区域相对坐标
查找区域: [x1,y1,x2,y2], // 必填,匹配范围相对坐标
二值阈值: [50,150], // 可选,预处理阈值
相似度: 0.8 // 匹配精度
}
*/
// 生成模板图像
var 全屏截图 = screen.screenShotFull(); // 获取全屏截图
var 模板图像 = 全屏截图.cutImagePercent( // 从全屏截图中裁剪出模板图像
配置参数.模板区域[0],
配置参数.模板区域[1],
配置参数.模板区域[2],
配置参数.模板区域[3]
).toBase64(); // 将裁剪出来的图像转换为Base64编码
全屏截图.recycle(); // 释放全屏截图资源,避免内存泄漏
// 预处理+匹配流程
var 处理截图 = screen.screenShot(432, 768, 100).getMat(); // 获取屏幕截图并转换为Mat格式
if(配置参数.二值阈值){
opencv.threshold(处理截图, 配置参数.二值阈值[0], 配置参数.二值阈值[1]); // 对图像进行二值化处理
}
// 在指定的查找区域内,使用指定的相似度对模板图像进行匹配
var 匹配结果 = opencv.templateMatch(
处理截图,
[模板图像],
配置参数.相似度,
配置参数.查找区域,
true
);
// 结果处理
if(匹配结果 && 匹配结果.length > 0){
for(var i=0; i<匹配结果.length; i++){
var 坐标 = 匹配结果[i].getRealRect(); // 获取每个匹配项的实际坐标
printl('发现目标 '+(i+1)+'# X:'+坐标.x+' Y:'+坐标.y); // 输出发现的目标的坐标信息
// 自动点击首个目标
if(i === 0) auto.clickPoint(坐标.getCenterX(), 坐标.getCenterY()); // 如果是第一个匹配项,则点击其中心坐标
}
return true;
}
return false;
}
/* 使用示例 (符合你截图中的参数需求) */
var 我的配置 = {
模板区域: [0.1181,0.4453,0.1875,0.4873], // 截图做模板的区域,相对屏幕的坐标
查找区域: [0,0,1,1], // 全屏查找
二值阈值: [50,150], // 启用预处理,设置二值化阈值
相似度: 0.8 // 设置匹配精度为0.8
};
// 如果在全屏范围内找到了与模板图像相似度达到0.8的目标,则输出发现的目标的坐标信息,并点击第一个目标的中心坐标,返回true
if(遍历找图(我的配置)){
printl("任务完成");
} else {
printl("未发现目标");
}
//第三个方法, 标准区域找图
function 执行找图() {
// 截图尺寸配置
var screenWidth = 432;
var screenHeight = 768;
try {
// 获取屏幕截图并进行二值化预处理
var mat = screen.screenShot(screenWidth, screenHeight, 100).getMat(); // 获取屏幕截图并转换为Mat格式
opencv.threshold(mat, 50, 150); // 对图像进行二值化处理,设置阈值为50到150
// 使用预设CV配置进行模板匹配
// '图色120996停止.cv'为预设的配置文件路径,里面包含了模板图像和查找参数等信息
var 查找结果 = opencv.findImagesEx('图色120996停止.cv');
// 处理匹配结果
if (查找结果 && 查找结果.length > 0) {
查找结果.forEach(function(匹配项) {
var 坐标 = 匹配项.getRealRect(); // 获取每个匹配项的实际坐标
printl('发现目标 X:' + 坐标.x + ' Y:' + 坐标.y); // 输出发现的目标的坐标信息
// 自动点击坐标(可选)
auto.clickPoint(坐标.getCenterX(), 坐标.getCenterY()); // 点击发现的目标的中心坐标
});
return true;
}
printl("当前屏幕未发现目标"); // 如果未发现目标,则输出此信息
return false;
} catch (e) {
printl("发生异常:" + e.message); // 如果在执行过程中发生异常,则捕获并输出异常信息
return false;
}
}
// 执行查找流程
// 调用执行找图函数,如果找到目标则输出"任务完成",否则输出"未发现目标"或异常信息
执行找图();
//第四个方法, 标准区域找图
// 屏幕截图预处理函数
function 创建模板截图(区域参数) {
var 全屏图 = screen.screenShotFull(); // 获取全屏截图
var 模板图 = 全屏图.cutImagePercent( // 从全屏截图中裁剪出模板图像
区域参数[0],
区域参数[1],
区域参数[2],
区域参数[3]
).toBase64(); // 将裁剪出来的图像转换为Base64编码
全屏图.recycle(); // 释放全屏截图资源,避免内存泄漏
return 模板图;
}
// 主查找逻辑
function 执行图像匹配() {
// 1.动态创建模板(替换为实际区域坐标)
var 模板组 = [
创建模板截图([0.1, 0.2, 0.3, 0.4]), // 模板1区域
创建模板截图([0.5, 0.6, 0.7, 0.8]) // 模板2区域
];
// 2.执行模板匹配
var 屏幕数据 = screen.screenShot(720, 1280, 0).getMat(); // 获取屏幕截图并转换为Mat格式
var 查找区域 = [0.5174, 0.2871, 0.7778, 0.416]; // 设置查找区域的相对坐标
var 结果 = opencv.templateMatch(
屏幕数据, // 要查找的屏幕数据
模板组, // 匹配的模板组
0.85, // 设置匹配精度为0.85
查找区域, // 设置匹配的区域
true // 多目标模式
);
// 3.处理匹配结果
if (结果 && 结果.length > 0) {
for (var i = 0; i < 结果.length; i++) {
var 坐标 = 结果[i].getRealRect(); // 获取每个匹配项的实际坐标
printl('找到目标 X:' + 坐标.x + ' Y:' + 坐标.y); // 输出找到的目标的坐标信息
auto.clickPoint(坐标.x, 坐标.y); // 点击找到的目标的中心坐标
}
return true;
}
return false;
}
// 执行流程
// 调用执行图像匹配函数,如果找到目标则输出"操作成功"并点击目标,否则输出"未找到目标"
if (执行图像匹配()) {
printl("操作成功");
} else {
printl("未找到目标");
}
//第五个方法, 使用opencv接口进行多目标查找
var results = opencv.findImagesEx('图色120996停止.cv');
if (results) {
// 遍历所有找到的结果
for (var i = 0; i < results.length; i++) {
// 获取每个结果的坐标信息
var rect = results[i].getRealRect(); // 获取匹配项的实际矩形区域
var x = rect.getCenterX(); // 获取矩形区域中心点的X坐标
var y = rect.getCenterY(); // 获取矩形区域中心点的Y坐标
printl('坐标:' + x + ',' + y); // 输出中心点坐标信息
// 如需点击可取消注释下行
// auto.clickPoint(x, y); // 点击找到的目标的中心坐标
}
} else {
printl("未找到目标"); // 如果未找到目标,则输出此信息
}
//第六个方法,动态找图点击
function 简易找图(模板区域, 相似度) {
try {
// 获取模板图片
var 全图 = screen.screenShotFull(); // 获取全屏截图
var 模板 = 全图.cutImagePercent(
模板区域[0],
模板区域[1],
模板区域[2],
模板区域[3]
).toBase64(); // 将裁剪出来的图像转换为Base64编码
全图.recycle(); // 释放全屏截图资源,避免内存泄漏
// 获取当前屏幕
var 当前画面 = screen.screenShot(720, 1280, 100).getMat(); // 获取屏幕截图并转换为Mat格式
// 执行匹配
var 结果集 = opencv.templateMatch(
当前画面, // 要查找的屏幕数据
[模板], // 匹配的模板组
相似度 || 0.8, // 设置匹配精度,默认为0.8
[0,0,1,1], // 全屏查找
true // 多目标模式
);
// 处理结果
if (结果集 && 结果集.length > 0) {
for(var i=0; i<结果集.length; i++) {
var 坐标框 = 结果集[i].getRealRect(); // 获取每个匹配项的实际矩形区域
// 正确获取中心点坐标的方式 ↓
var x = 坐표框.getCenterX(); // 获取矩形区域中心点的X坐标
var y = 坐标框.getCenterY(); // 获取矩形区域中心点的Y坐标
printl('发现目标' + (i+1) + ' X:' + x + ' Y:' + y); // 输出中心点坐标信息
}
return true;
}
} catch(e) {
printl("错误:" + e.toString()); // 如果在执行过程中发生异常,则捕获并输出异常信息
}
return false;
}
// 使用示例(需要先截图定义模板区域)
var 我的模板区域 = [0.3,0.2,0.7,0.6]; // [x1,y1,x2,y2] 查找区域的左上角和右下角相对屏幕的坐标
// 如果在全屏范围内找到了与模板图像相似度达到0.85的目标,则输出发现的目标的坐标信息,并点击目标的中心坐标,返回true
if(简易找图(我的模板区域, 0.85)) {
printl("查找成功!");
} else {
printl("查找失败");
}
复制代码
方法一:定义图像查找函数
功能:在指定的查找区域内查找与模板图像相似度达到设定值的目标,并自动点击该目标的中心位置。
参数:
searchRegion:查找区域的相对坐标,格式为 [x1, y1, x2, y2],其中 (x1, y1) 是左上角坐标,(x2, y2) 是右下角坐标。
templateImage:模板图像的Base64编码字符串。
similarity:相似度阈值,用于判断是否匹配。
流程:
获取屏幕截图并转换为Mat格式。
在指定区域内进行模板匹配。
如果找到匹配项,则点击其中心位置,并返回true;否则返回false。
方法二:标准遍历找图函数
功能:在指定区域内查找与模板图像相似度达到设定值的目标,并输出所有目标的坐标信息,自动点击首个目标。
参数:
配置参数:一个对象,包含查找区域、模板区域、二值阈值和相似度等配置信息。
流程:
从全屏截图中裁剪出模板图像,并将其转换为Base64编码。
获取屏幕截图并转换为Mat格式。
如果配置了二值阈值,则对图像进行二值化预处理。
在指定的查找区域内进行模板匹配。
如果找到匹配项,则输出每个匹配项的坐标信息,并点击首个匹配项的中心位置,返回true;否则返回false。
方法三:标准区域找图
功能:从预设的配置文件中获取模板图像和查找参数,并在全屏范围内查找与模板图像相似度达到设定值的目标,自动点击首个目标。
流程:
获取屏幕截图并进行二值化预处理。
使用预设的配置文件进行模板匹配。
如果找到匹配项,则输出每个匹配项的坐标信息,并点击首个匹配项的中心位置,返回true;否则返回false。
如果在执行过程中发生异常,则捕获并输出异常信息。
方法四:使用预定义模板进行多目标查找
功能:动态创建模板图像,并在指定区域内查找与模板图像相似度达到设定值的所有目标,自动点击每个找到的目标。
流程:
动态创建模板图像,并将其转换为Base64编码。
获取屏幕截图并转换为Mat格式。
在指定的查找区域内进行模板匹配。
如果找到匹配项,则输出每个匹配项的坐标信息,并点击每个匹配项的中心位置,返回true;否则返回false。
方法五:使用OpenCV接口进行多目标查找
功能:从预设的配置文件中获取模板图像和查找参数,并在全屏范围内查找与模板图像相似度达到设定值的所有目标,输出每个找到的目标的中心坐标。
流程:
使用预设的配置文件进行模板匹配。
如果找到匹配项,则遍历每个匹配项,输出其中心坐标信息。
如需点击可取消注释相关代码行。
方法六:动态找图点击
功能:在全屏范围内查找与模板图像相似度达到设定值的目标,并输出所有目标的中心坐标信息,自动点击每个找到的目标。
参数:
模板区域:查找区域的相对坐标,格式为 [x1, y1, x2, y2]。
相似度:相似度阈值,默认为0.8。
流程:
从全屏截图中裁剪出模板图像,并将其转换为Base64编码。
获取屏幕截图并转换为Mat格式。
在全屏范围内进行模板匹配。
如果找到匹配项,则输出每个匹配项的中心坐标信息,并点击每个匹配项的中心位置,返回true;否则返回false。
如果在执行过程中发生异常,则捕获并输出异常信息。
注意事项
所有代码中的相对坐标是相对于屏幕大小的比例值,因此需要确保坐标值正确且与实际屏幕尺寸匹配。
使用Base64编码可以方便地在不同的脚本或系统之间传递图像数据。
释放资源(如recycle())是防止内存泄漏的重要步骤。
使用二值化阈值可以提高图像匹配的准确性,特别是在颜色复杂的背景下。
opencv.findImagesEx()函数通常依赖于预设的配置文件,该文件中包含了模板图像和查找参数等信息。
欢迎光临 自动发帖软件 (http://www.fatiegongju.com/)
Powered by Discuz! X3.2