 | |  |  | 图像视觉处理[opencv]小结3
- // // 🍎交流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, [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: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(); |
| |  | |  |
|