YYPOST群发软件 发表于 2025-10-22 08:08:27

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

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




方法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, );            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.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.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.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.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.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();



// // &#127822;交流QQ群711841924群一,苹果内测群,528816639

// 方法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, );
      
      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.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.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.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.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.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]
查看完整版本: AIWROK软件图像视觉处理[opencv]小结3