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();
// // 🍎交流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]