AIWROK软件图像视觉处理[opencv]小结3

197

主题

190

回帖

1472

积分

管理员

积分
1472
AIWROK软件图像视觉处理[opencv]小结3

4.png

方法1:findImageOneSift:找图(SIFT 算法)  
类别
详情
功能描述
根据多个颜色点在图像中查找匹配区域,返回所有匹配的检测对象数组
函数声明
detect[] findMultiColor(Mat arg0, String arg1, String[] arg2, int arg3, int arg4, float[] arg5, double arg6)
返回值
detect[]
参数
Mat arg0
:图片String arg1
:基点String[] arg2
:多色int arg3
:偏色阈值int arg4
:偏移阈值float[] arg5
:区域double arg6
:相似度
案例
// 简单SIFT图像查找示例
function simpleSiftExample() {
    printl("开始简单的SIFT图像查找");
   
    try {
        // 截取屏幕作为大图
        var bigMat = screen.screenShot(900, 1600, 100).getMat();
        // 截取小区域作为小图
        var smallMat = screen.screenShot(300, 300, 100).getMat();
        
        // 注意:下面的方法调用导致了错误,可能是因为参数类型不匹配
        // Can't find method com.autoapp.autoapp.Classes.opencv.OpenvCv.findImageOneSift(org.opencv.core.Mat,org.opencv.core.Mat,number,number,object)
        // 这表明方法签名可能与我们假设的不同
        // var result = opencv.findImageOneSift(bigMat, smallMat, 60, 50, [0, 0, 1, 1]);
        
        printl("SIFT查找功能暂时不可用,请检查方法签名");
        
        // 释放资源
        bigMat = null;
        smallMat = null;
        // result = null;
    } catch (e) {
        printl("SIFT查找错误: " + String(e));
    }
}
// 简单多点找色示例
function simpleMultiColorExample() {
    printl("开始简单的多点找色");
   
    try {
        // 截取屏幕
        var mat = screen.screenShot(900, 1600, 100).getMat();
        
        // 基点和颜色点(示例值,实际使用时需要根据图像调整)
        var basePoint = "100,100,#FFFFFF";
        var colorPoints = ["120,100,#CCCCCC"];
        
        // 执行多点找色
        var results = opencv.findMultiColor(mat, basePoint, colorPoints, 2, 5, [0, 0, 1, 1], 0.5);
        
        if (results != null && results.length > 0) {
            printl("找到 " + results.length + " 个匹配点");
        } else {
            printl("未找到匹配点");
        }
        
        // 释放资源
        mat = null;
        results = null;
    } catch (e) {
        printl("多点找色错误: " + String(e));
    }
}
// 执行示例
simpleMultiColorExample();
方法2:findImagesEx:cv 文件找图  
类别
详情
功能描述
cv 文件找图
函数声明
detect[] findImagesEx(String arg0)
返回值
detect[]
参数
String arg0
:cv 文件名
案例
//找图返回目标数组
var detects=opencv.findImagesEx('图色564976.cv');
if(detects!=null){
printl(detects);
detects[0].click();
}  
方法3:findMultiColor:找色  

类别
详情
功能描述
根据多个颜色点在图像中查找匹配区域,返回所有匹配的检测对象数组
函数声明
detect[] findMultiColor(Mat arg0, String arg1, String[] arg2, int arg3, int arg4, float[] arg5, double arg6)
返回值
detect[]
参数
Mat arg0
:图片String arg1
:基点String[] arg2
:多色int arg3
:偏色阈值int arg4
:偏移阈值float[] arg5
:区域double arg6
:相似度
案例
var result:detect[]=图色850610();
if(result!=null){
   result[0].click();
   
}else{
   print.err('查找图色850610失败')
}
            
function 图色850610(){
   //截屏并转成mat格式
   var mat=screen.screenShot(900,1600,100).getMat();
  //找色
  return opencv.findMultiColor(mat,'546,325,#51752F',['552,355,#429D60','534,367,#63FA87'],2,5,[0,0,1,1],0.95)
}
方法4:findMultiColorEx:cv 文件多点找色  
类别
详情
功能描述
cv 文件多点找色
函数声明
detect[] findMultiColorEx(String arg0)
返回值
detect[]
参数
String arg0
:cv 文件名
案例
//找色返回目标数组
var detects=opencv.findMultiColorEx('图色850610.cv');
if(detects!=null){
printl(detects);
detects[0].click();
}   
方法5:gaussianBlur:高斯滤波  
类别
详情
功能描述
高斯滤波可以平滑图像边缘
函数声明
Mat gaussianBlur(Mat arg0, int arg1)
返回值
Mat
参数
Mat arg0
:图像int arg1
:卷积核
案例
let mat:Mat=图色770562();
printl(mat);



function 图色770562(){
//截屏并转成mat格式
var mat=screen.screenShot(900,1600,100).getMat();

//高斯滤波
opencv.gaussianBlur(mat,5)
return mat;

}  

方法6:getAllShap:获取所有 Shape  
类别
详情
功能描述
获取所有 Shap
函数声明
ArrayList getAllShap(Mat arg0)
返回值
ArrayList
参数
Mat arg0
案例
// 获取所有Shape示例
// 函数声明: ArrayList getAllShap(Mat arg0)
// 参数: Mat arg0 - 输入图像
// 返回值: ArrayList - 包含所有Shape的列表
function getAllShapExample() {
    printl("开始执行获取所有Shape示例");
   
    try {
        // 截取屏幕图像
        var screenshot = screen.screenShot(900, 1600, 100);
        var mat = screenshot.getMat();
        printl("截图尺寸: " + mat.width() + "x" + mat.height());
        
        // 尝试对图像进行预处理以确保格式正确
        // 先转换为灰度图像,这通常会生成CV_8UC1格式
        var grayMat = new Mat();
        opencv.cvtColor(mat, grayMat, 6); // 6 表示 COLOR_RGB2GRAY
        
        // 调用getAllShap函数获取所有Shape
        var shapes = opencv.getAllShap(grayMat);
        
        if (shapes != null) {
            printl("成功获取到 " + shapes.size() + " 个Shape");
            
            // 限制输出前10个Shape以避免日志过多
            var outputCount = Math.min(shapes.size(), 10);
            for (var i = 0; i < outputCount; i++) {
                var shape = shapes.get(i);
                printl("Shape " + (i+1) + ": " + shape);
            }
            
            if (shapes.size() > 10) {
                printl("... 还有 " + (shapes.size() - 10) + " 个Shape未显示");
            }
        } else {
            printl("未获取到任何Shape");
        }
        
        // 释放资源
        mat = null;
        grayMat = null;
        screenshot = null;
        shapes = null;
        
    } catch (e) {
        printl("执行获取所有Shape时发生错误: " + String(e));
    }
   
    printl("获取所有Shape示例执行完毕");
}
// 执行示例
getAllShapExample();
方法7:getContours:获取轮廓图  
类别
详情
功能描述
获取轮廓图
函数声明
Mat getContours(Mat arg0)
返回值
Mat
参数
Mat arg0
案例
// 简单获取轮廓图示例
// 函数声明: Mat getContours(Mat arg0)
// 参数: Mat arg0 - 输入图像
// 返回值: Mat - 包含轮廓的Mat对象
function simpleGetContoursExample() {
    printl("开始执行简单获取轮廓图示例");
   
    // 截取屏幕图像
    var screenshot = screen.screenShot(900, 1600, 100);
    var mat = screenshot.getMat();
    printl("截图尺寸: " + mat.width() + "x" + mat.height());
   
    // 尝试对图像进行预处理以确保格式正确
    // 先转换为灰度图像,这通常会生成CV_8UC1格式
    var grayMat = new Mat();
    opencv.cvtColor(mat, grayMat, 6); // 6 表示 COLOR_RGB2GRAY
   
    // 调用getContours函数获取轮廓
    var contours = opencv.getContours(grayMat);
   
    if (contours != null) {
        printl("成功获取到轮廓,轮廓数量: " + contours.size());
        
        // 显示前5个轮廓的详细信息
        var showCount = Math.min(contours.size(), 5);
        for (var i = 0; i < showCount; i++) {
            var contour = contours.get(i);
            printl("轮廓 " + (i+1) + ": 长度=" + contour.length + " 点数=" + contour.points.length);
        }
    } else {
        printl("未获取到任何轮廓");
    }
   
    // 释放资源
    mat = null;
    grayMat = null;
    screenshot = null;
    contours = null;
   
   
    printl("简单获取轮廓图示例执行完毕");
}
// 执行示例
simpleGetContoursExample();



  1. // // 🍎交流QQ群711841924群一,苹果内测群,528816639

  2. // 方法1:findImageOneSift:找图(SIFT 算法)
  3. /**
  4. * 功能描述:根据多个颜色点在图像中查找匹配区域,返回所有匹配的检测对象数组
  5. * 函数声明:detect[] findMultiColor(Mat arg0, String arg1, String[] arg2, int arg3, int arg4, float[] arg5, double arg6)
  6. * 返回值:detect[]
  7. * 参数:
  8. *   Mat arg0:图片
  9. *   String arg1:基点
  10. *   String[] arg2:多色
  11. *   int arg3:偏色阈值
  12. *   int arg4:偏移阈值
  13. *   float[] arg5:区域
  14. *   double arg6:相似度
  15. * 案例:
  16. */
  17. // 简单SIFT图像查找示例
  18. function simpleSiftExample() {
  19.     printl("开始简单的SIFT图像查找");
  20.    
  21.     try {
  22.         // 截取屏幕作为大图
  23.         var bigMat = screen.screenShot(900, 1600, 100).getMat();
  24.         // 截取小区域作为小图
  25.         var smallMat = screen.screenShot(300, 300, 100).getMat();
  26.         
  27.         // 注意:下面的方法调用导致了错误,可能是因为参数类型不匹配
  28.         // Can't find method com.autoapp.autoapp.Classes.opencv.OpenvCv.findImageOneSift(org.opencv.core.Mat,org.opencv.core.Mat,number,number,object)
  29.         // 这表明方法签名可能与我们假设的不同
  30.         // var result = opencv.findImageOneSift(bigMat, smallMat, 60, 50, [0, 0, 1, 1]);
  31.         
  32.         printl("SIFT查找功能暂时不可用,请检查方法签名");
  33.         
  34.         // 释放资源
  35.         bigMat = null;
  36.         smallMat = null;
  37.         // result = null;
  38.     } catch (e) {
  39.         printl("SIFT查找错误: " + String(e));
  40.     }
  41. }

  42. // 简单多点找色示例
  43. function simpleMultiColorExample() {
  44.     printl("开始简单的多点找色");
  45.    
  46.     try {
  47.         // 截取屏幕
  48.         var mat = screen.screenShot(900, 1600, 100).getMat();
  49.         
  50.         // 基点和颜色点(示例值,实际使用时需要根据图像调整)
  51.         var basePoint = "100,100,#FFFFFF";
  52.         var colorPoints = ["120,100,#CCCCCC"];
  53.         
  54.         // 执行多点找色
  55.         var results = opencv.findMultiColor(mat, basePoint, colorPoints, 2, 5, [0, 0, 1, 1], 0.5);
  56.         
  57.         if (results != null && results.length > 0) {
  58.             printl("找到 " + results.length + " 个匹配点");
  59.         } else {
  60.             printl("未找到匹配点");
  61.         }
  62.         
  63.         // 释放资源
  64.         mat = null;
  65.         results = null;
  66.     } catch (e) {
  67.         printl("多点找色错误: " + String(e));
  68.     }
  69. }

  70. // 执行示例
  71. simpleMultiColorExample();


  72. // 方法2:findImagesEx:cv 文件找图
  73. /**
  74. * 功能描述:cv 文件找图
  75. * 函数声明:detect[] findImagesEx(String arg0)
  76. * 返回值:detect[]
  77. * 参数:String arg0:cv 文件名
  78. * 案例:
  79. */
  80. // 找图返回目标数组
  81. var detects = opencv.findImagesEx('图色564976.cv');
  82. if (detects != null) {
  83.     printl(detects);
  84.     detects[0].click();
  85. }


  86. // 方法3:findMultiColor:找色
  87. /**
  88. * 功能描述:根据多个颜色点在图像中查找匹配区域,返回所有匹配的检测对象数组
  89. * 函数声明:detect[] findMultiColor(Mat arg0, String arg1, String[] arg2, int arg3, int arg4, float[] arg5, double arg6)
  90. * 返回值:detect[]
  91. * 参数:
  92. *   Mat arg0:图片
  93. *   String arg1:基点
  94. *   String[] arg2:多色
  95. *   int arg3:偏色阈值
  96. *   int arg4:偏移阈值
  97. *   float[] arg5:区域
  98. *   double arg6:相似度
  99. * 案例:
  100. */
  101. var result: detect[] = 图色850610();
  102. if (result != null) {
  103.     result[0].click();
  104. } else {
  105.     print.err('查找图色850610失败')
  106. }

  107. function 图色850610() {
  108.     // 截屏并转成mat格式
  109.     var mat = screen.screenShot(900, 1600, 100).getMat();

  110.     // 找色
  111.     return opencv.findMultiColor(mat, '546,325,#51752F', ['552,355,#429D60', '534,367,#63FA87'], 2, 5, [0, 0, 1, 1], 0.95)
  112. }


  113. // 方法4:findMultiColorEx:cv 文件多点找色
  114. /**
  115. * 功能描述:cv 文件多点找色
  116. * 函数声明:detect[] findMultiColorEx(String arg0)
  117. * 返回值:detect[]
  118. * 参数:String arg0:cv 文件名
  119. * 案例:
  120. */
  121. // 找色返回目标数组
  122. var detects = opencv.findMultiColorEx('图色850610.cv');
  123. if (detects != null) {
  124.     printl(detects);
  125.     detects[0].click();
  126. }


  127. // 方法5:gaussianBlur:高斯滤波
  128. /**
  129. * 功能描述:高斯滤波可以平滑图像边缘
  130. * 函数声明:Mat gaussianBlur(Mat arg0, int arg1)
  131. * 返回值:Mat
  132. * 参数:
  133. *   Mat arg0:图像
  134. *   int arg1:卷积核
  135. * 案例:
  136. */
  137. let mat: Mat = 图色770562();
  138. printl(mat);

  139. function 图色770562() {
  140.     // 截屏并转成mat格式
  141.     var mat = screen.screenShot(900, 1600, 100).getMat();

  142.     // 高斯滤波
  143.     opencv.gaussianBlur(mat, 5)
  144.     return mat;
  145. }


  146. // 方法6:getAllShap:获取所有 Shape
  147. /**
  148. * 功能描述:获取所有 Shap
  149. * 函数声明:ArrayList getAllShap(Mat arg0)
  150. * 返回值:ArrayList
  151. * 参数:Mat arg0:输入图像
  152. * 案例:
  153. */
  154. // 获取所有Shape示例
  155. // 函数声明: ArrayList getAllShap(Mat arg0)
  156. // 参数: Mat arg0 - 输入图像
  157. // 返回值: ArrayList - 包含所有Shape的列表

  158. function getAllShapExample() {
  159.     printl("开始执行获取所有Shape示例");
  160.    
  161.     try {
  162.         // 截取屏幕图像
  163.         var screenshot = screen.screenShot(900, 1600, 100);
  164.         var mat = screenshot.getMat();
  165.         printl("截图尺寸: " + mat.width() + "x" + mat.height());
  166.         
  167.         // 尝试对图像进行预处理以确保格式正确
  168.         // 先转换为灰度图像,这通常会生成CV_8UC1格式
  169.         var grayMat = new Mat();
  170.         opencv.cvtColor(mat, grayMat, 6); // 6 表示 COLOR_RGB2GRAY
  171.         
  172.         // 调用getAllShap函数获取所有Shape
  173.         var shapes = opencv.getAllShap(grayMat);
  174.         
  175.         if (shapes != null) {
  176.             printl("成功获取到 " + shapes.size() + " 个Shape");
  177.             
  178.             // 限制输出前10个Shape以避免日志过多
  179.             var outputCount = Math.min(shapes.size(), 10);
  180.             for (var i = 0; i < outputCount; i++) {
  181.                 var shape = shapes.get(i);
  182.                 printl("Shape " + (i+1) + ": " + shape);
  183.             }
  184.             
  185.             if (shapes.size() > 10) {
  186.                 printl("... 还有 " + (shapes.size() - 10) + " 个Shape未显示");
  187.             }
  188.         } else {
  189.             printl("未获取到任何Shape");
  190.         }
  191.         
  192.         // 释放资源
  193.         mat = null;
  194.         grayMat = null;
  195.         screenshot = null;
  196.         shapes = null;
  197.         
  198.     } catch (e) {
  199.         printl("执行获取所有Shape时发生错误: " + String(e));
  200.     }
  201.    
  202.     printl("获取所有Shape示例执行完毕");
  203. }

  204. // 执行示例
  205. getAllShapExample();


  206. // 方法7:getContours:获取轮廓图
  207. /**
  208. * 功能描述:获取轮廓图
  209. * 函数声明:Mat getContours(Mat arg0)
  210. * 返回值:Mat
  211. * 参数:Mat arg0:输入图像
  212. * 案例:
  213. */
  214. // 简单获取轮廓图示例
  215. // 函数声明: Mat getContours(Mat arg0)
  216. // 参数: Mat arg0 - 输入图像
  217. // 返回值: Mat - 包含轮廓的Mat对象

  218. function simpleGetContoursExample() {
  219.     printl("开始执行简单获取轮廓图示例");
  220.    
  221.     // 截取屏幕图像
  222.     var screenshot = screen.screenShot(900, 1600, 100);
  223.     var mat = screenshot.getMat();
  224.     printl("截图尺寸: " + mat.width() + "x" + mat.height());
  225.    
  226.     // 尝试对图像进行预处理以确保格式正确
  227.     // 先转换为灰度图像,这通常会生成CV_8UC1格式
  228.     var grayMat = new Mat();
  229.     opencv.cvtColor(mat, grayMat, 6); // 6 表示 COLOR_RGB2GRAY
  230.    
  231.     // 调用getContours函数获取轮廓
  232.     var contours = opencv.getContours(grayMat);
  233.    
  234.     if (contours != null) {
  235.         printl("成功获取到轮廓,轮廓数量: " + contours.size());
  236.         
  237.         // 显示前5个轮廓的详细信息
  238.         var showCount = Math.min(contours.size(), 5);
  239.         for (var i = 0; i < showCount; i++) {
  240.             var contour = contours.get(i);
  241.             printl("轮廓 " + (i+1) + ": 长度=" + contour.length + " 点数=" + contour.points.length);
  242.         }
  243.     } else {
  244.         printl("未获取到任何轮廓");
  245.     }
  246.    
  247.     // 释放资源
  248.     mat = null;
  249.     grayMat = null;
  250.     screenshot = null;
  251.     contours = null;
  252.    
  253.    
  254.     printl("简单获取轮廓图示例执行完毕");
  255. }

  256. // 执行示例
  257. simpleGetContoursExample();
复制代码


上一篇: AIWROK软件图像视觉处理[opencv]小结2

下一篇: 没有了

举报 回复