自动发帖软件

标题: AIWROK软件找图__方法小汇集 [打印本页]

作者: 发帖软件    时间: 14 小时前
标题: AIWROK软件找图__方法小汇集


AIWROK软件找图__方法小汇集 群发软件发帖工具 AIWROK软件找图__方法小汇集 群发软件发帖工具 AIWROK软件找图__方法小汇集 群发软件发帖工具
  1. // 第一种方法: 定义图像查找函数(参数顺序:查找区域,模板图像,相似度)
  2. function 查找图像(searchRegion, templateImage, similarity) {
  3.     // 获取屏幕截图并转换为Mat(注意尺寸参数需与实际设备匹配)
  4.     var mat = screen.screenShot(720, 1280, 0).getMat();
  5.    
  6.     // 在指定区域内进行模板匹配
  7.     var result = opencv.templateMatch(mat, [templateImage], similarity, searchRegion, true);
  8.    
  9.     // 处理结果
  10.     if (result) {
  11.         var target = result[0].getRealRect();
  12.         auto.clickPoint(target.getCenterX(), target.getCenterY());
  13.         return true;
  14.     }
  15.     return false;
  16. }

  17. // 使用示例:
  18. // 1.定义查找区域(相对坐标[x1,y1,x2,y2])
  19. var 查找区域 = [0.3524, 0.3115, 0.4253, 0.3555]; // 查找区域的左上角和右下角相对屏幕的坐标

  20. // 2.获取模板图像(ES5兼容写法)
  21. var 全屏截图 = screen.screenShotFull(); // 获取全屏截图
  22. var 模板图片 = 全屏截图.cutImagePercent( // 从全屏截图中裁剪出模板图像
  23.     查找区域[0], // x1
  24.     查找区域[1], // y1
  25.     查找区域[2], // x2
  26.     查找区域[3]  // y2
  27. ).toBase64(); // 将裁剪出来的图像转换为Base64编码
  28. 全屏截图.recycle(); // 释放全屏截图资源,避免内存泄漏

  29. // 3.执行查找(参数顺序:区域,模板,相似度)
  30. // 如果在指定的查找区域内找到了与模板图像相似度达到0.8的目标,则自动点击该目标的中心坐标,并返回true
  31. if (查找图像(查找区域, 模板图片, 0.8)) {
  32.     printl("操作成功");
  33. } else {
  34.     printl("未找到目标");
  35. }

  36. //第二个方法, 标准遍历找图函数
  37. function 遍历找图(配置参数) {
  38.     /* 参数说明
  39.        配置参数 = {
  40.           模板区域: [x1,y1,x2,y2],  // 必填,截图区域相对坐标
  41.           查找区域: [x1,y1,x2,y2],  // 必填,匹配范围相对坐标
  42.           二值阈值: [50,150],       // 可选,预处理阈值
  43.           相似度: 0.8              // 匹配精度
  44.        }
  45.     */
  46.    
  47.     // 生成模板图像
  48.     var 全屏截图 = screen.screenShotFull(); // 获取全屏截图
  49.     var 模板图像 = 全屏截图.cutImagePercent( // 从全屏截图中裁剪出模板图像
  50.         配置参数.模板区域[0],
  51.         配置参数.模板区域[1],
  52.         配置参数.模板区域[2],
  53.         配置参数.模板区域[3]
  54.     ).toBase64(); // 将裁剪出来的图像转换为Base64编码
  55.     全屏截图.recycle(); // 释放全屏截图资源,避免内存泄漏

  56.     // 预处理+匹配流程
  57.     var 处理截图 = screen.screenShot(432, 768, 100).getMat(); // 获取屏幕截图并转换为Mat格式
  58.     if(配置参数.二值阈值){
  59.         opencv.threshold(处理截图, 配置参数.二值阈值[0], 配置参数.二值阈值[1]); // 对图像进行二值化处理
  60.     }
  61.    
  62.     // 在指定的查找区域内,使用指定的相似度对模板图像进行匹配
  63.     var 匹配结果 = opencv.templateMatch(
  64.         处理截图,
  65.         [模板图像],
  66.         配置参数.相似度,
  67.         配置参数.查找区域,
  68.         true
  69.     );

  70.     // 结果处理
  71.     if(匹配结果 && 匹配结果.length > 0){
  72.         for(var i=0; i<匹配结果.length; i++){
  73.             var 坐标 = 匹配结果[i].getRealRect(); // 获取每个匹配项的实际坐标
  74.             printl('发现目标 '+(i+1)+'# X:'+坐标.x+' Y:'+坐标.y); // 输出发现的目标的坐标信息
  75.             // 自动点击首个目标
  76.             if(i === 0) auto.clickPoint(坐标.getCenterX(), 坐标.getCenterY()); // 如果是第一个匹配项,则点击其中心坐标
  77.         }
  78.         return true;
  79.     }
  80.     return false;
  81. }

  82. /* 使用示例 (符合你截图中的参数需求) */
  83. var 我的配置 = {
  84.     模板区域: [0.1181,0.4453,0.1875,0.4873], // 截图做模板的区域,相对屏幕的坐标
  85.     查找区域: [0,0,1,1],                    // 全屏查找
  86.     二值阈值: [50,150],                    // 启用预处理,设置二值化阈值
  87.     相似度: 0.8                             // 设置匹配精度为0.8
  88. };

  89. // 如果在全屏范围内找到了与模板图像相似度达到0.8的目标,则输出发现的目标的坐标信息,并点击第一个目标的中心坐标,返回true
  90. if(遍历找图(我的配置)){
  91.     printl("任务完成");
  92. } else {
  93.     printl("未发现目标");
  94. }

  95. //第三个方法, 标准区域找图
  96. function 执行找图() {
  97.     // 截图尺寸配置
  98.     var screenWidth = 432;
  99.     var screenHeight = 768;
  100.    
  101.     try {
  102.         // 获取屏幕截图并进行二值化预处理
  103.         var mat = screen.screenShot(screenWidth, screenHeight, 100).getMat(); // 获取屏幕截图并转换为Mat格式
  104.         opencv.threshold(mat, 50, 150); // 对图像进行二值化处理,设置阈值为50到150

  105.         // 使用预设CV配置进行模板匹配
  106.         // '图色120996停止.cv'为预设的配置文件路径,里面包含了模板图像和查找参数等信息
  107.         var 查找结果 = opencv.findImagesEx('图色120996停止.cv');
  108.         
  109.         // 处理匹配结果
  110.         if (查找结果 && 查找结果.length > 0) {
  111.             查找结果.forEach(function(匹配项) {
  112.                 var 坐标 = 匹配项.getRealRect(); // 获取每个匹配项的实际坐标
  113.                 printl('发现目标 X:' + 坐标.x + ' Y:' + 坐标.y); // 输出发现的目标的坐标信息
  114.                 // 自动点击坐标(可选)
  115.                 auto.clickPoint(坐标.getCenterX(), 坐标.getCenterY()); // 点击发现的目标的中心坐标
  116.             });
  117.             return true;
  118.         }
  119.         
  120.         printl("当前屏幕未发现目标"); // 如果未发现目标,则输出此信息
  121.         return false;
  122.     } catch (e) {
  123.         printl("发生异常:" + e.message); // 如果在执行过程中发生异常,则捕获并输出异常信息
  124.         return false;
  125.     }
  126. }
  127. // 执行查找流程
  128. // 调用执行找图函数,如果找到目标则输出"任务完成",否则输出"未发现目标"或异常信息
  129. 执行找图();

  130. //第四个方法, 标准区域找图
  131. // 屏幕截图预处理函数
  132. function 创建模板截图(区域参数) {
  133.     var 全屏图 = screen.screenShotFull(); // 获取全屏截图
  134.     var 模板图 = 全屏图.cutImagePercent( // 从全屏截图中裁剪出模板图像
  135.         区域参数[0],
  136.         区域参数[1],
  137.         区域参数[2],
  138.         区域参数[3]
  139.     ).toBase64(); // 将裁剪出来的图像转换为Base64编码
  140.     全屏图.recycle(); // 释放全屏截图资源,避免内存泄漏
  141.     return 模板图;
  142. }

  143. // 主查找逻辑
  144. function 执行图像匹配() {
  145.     // 1.动态创建模板(替换为实际区域坐标)
  146.     var 模板组 = [
  147.         创建模板截图([0.1, 0.2, 0.3, 0.4]), // 模板1区域
  148.         创建模板截图([0.5, 0.6, 0.7, 0.8])  // 模板2区域
  149.     ];
  150.    
  151.     // 2.执行模板匹配
  152.     var 屏幕数据 = screen.screenShot(720, 1280, 0).getMat(); // 获取屏幕截图并转换为Mat格式
  153.     var 查找区域 = [0.5174, 0.2871, 0.7778, 0.416]; // 设置查找区域的相对坐标
  154.     var 结果 = opencv.templateMatch(
  155.         屏幕数据, // 要查找的屏幕数据
  156.         模板组,   // 匹配的模板组
  157.         0.85,     // 设置匹配精度为0.85
  158.         查找区域, // 设置匹配的区域
  159.         true      // 多目标模式
  160.     );

  161.     // 3.处理匹配结果
  162.     if (结果 && 结果.length > 0) {
  163.         for (var i = 0; i < 结果.length; i++) {
  164.             var 坐标 = 结果[i].getRealRect(); // 获取每个匹配项的实际坐标
  165.             printl('找到目标 X:' + 坐标.x + ' Y:' + 坐标.y); // 输出找到的目标的坐标信息
  166.             auto.clickPoint(坐标.x, 坐标.y); // 点击找到的目标的中心坐标
  167.         }
  168.         return true;
  169.     }
  170.     return false;
  171. }

  172. // 执行流程
  173. // 调用执行图像匹配函数,如果找到目标则输出"操作成功"并点击目标,否则输出"未找到目标"
  174. if (执行图像匹配()) {
  175.     printl("操作成功");
  176. } else {
  177.     printl("未找到目标");
  178. }

  179. //第五个方法, 使用opencv接口进行多目标查找
  180. var results = opencv.findImagesEx('图色120996停止.cv');

  181. if (results) {
  182.     // 遍历所有找到的结果
  183.     for (var i = 0; i < results.length; i++) {
  184.         // 获取每个结果的坐标信息
  185.         var rect = results[i].getRealRect(); // 获取匹配项的实际矩形区域
  186.         var x = rect.getCenterX(); // 获取矩形区域中心点的X坐标
  187.         var y = rect.getCenterY(); // 获取矩形区域中心点的Y坐标
  188.         printl('坐标:' + x + ',' + y); // 输出中心点坐标信息
  189.         
  190.         // 如需点击可取消注释下行
  191.         // auto.clickPoint(x, y); // 点击找到的目标的中心坐标
  192.     }
  193. } else {
  194.     printl("未找到目标"); // 如果未找到目标,则输出此信息
  195. }

  196. //第六个方法,动态找图点击
  197. function 简易找图(模板区域, 相似度) {
  198.     try {
  199.         // 获取模板图片
  200.         var 全图 = screen.screenShotFull(); // 获取全屏截图
  201.         var 模板 = 全图.cutImagePercent(
  202.             模板区域[0],
  203.             模板区域[1],
  204.             模板区域[2],
  205.             模板区域[3]
  206.         ).toBase64(); // 将裁剪出来的图像转换为Base64编码
  207.         全图.recycle(); // 释放全屏截图资源,避免内存泄漏

  208.         // 获取当前屏幕
  209.         var 当前画面 = screen.screenShot(720, 1280, 100).getMat(); // 获取屏幕截图并转换为Mat格式
  210.         
  211.         // 执行匹配
  212.         var 结果集 = opencv.templateMatch(
  213.             当前画面, // 要查找的屏幕数据
  214.             [模板],   // 匹配的模板组
  215.             相似度 || 0.8, // 设置匹配精度,默认为0.8
  216.             [0,0,1,1],    // 全屏查找
  217.             true           // 多目标模式
  218.         );

  219.         // 处理结果
  220.         if (结果集 && 结果集.length > 0) {
  221.             for(var i=0; i<结果集.length; i++) {
  222.                 var 坐标框 = 结果集[i].getRealRect(); // 获取每个匹配项的实际矩形区域
  223.                 // 正确获取中心点坐标的方式 ↓
  224.                 var x = 坐표框.getCenterX(); // 获取矩形区域中心点的X坐标
  225.                 var y = 坐标框.getCenterY(); // 获取矩形区域中心点的Y坐标
  226.                 printl('发现目标' + (i+1) + ' X:' + x + ' Y:' + y); // 输出中心点坐标信息
  227.             }
  228.             return true;
  229.         }
  230.     } catch(e) {
  231.         printl("错误:" + e.toString()); // 如果在执行过程中发生异常,则捕获并输出异常信息
  232.     }
  233.     return false;
  234. }

  235. // 使用示例(需要先截图定义模板区域)
  236. var 我的模板区域 = [0.3,0.2,0.7,0.6]; // [x1,y1,x2,y2] 查找区域的左上角和右下角相对屏幕的坐标
  237. // 如果在全屏范围内找到了与模板图像相似度达到0.85的目标,则输出发现的目标的坐标信息,并点击目标的中心坐标,返回true
  238. if(简易找图(我的模板区域, 0.85)) {
  239.     printl("查找成功!");
  240. } else {
  241.     printl("查找失败");
  242. }
复制代码


方法一:定义图像查找函数
方法二:标准遍历找图函数方法三:标准区域找图方法四:使用预定义模板进行多目标查找方法五:使用OpenCV接口进行多目标查找方法六:动态找图点击注意事项





欢迎光临 自动发帖软件 (http://www.fatiegongju.com/) Powered by Discuz! X3.2