| 类别[size=1em] | 内容[size=1em] |
| 功能说明[size=1em] | 从图像中遍历查找所有的坐标和对应的颜色是否符合并返回找到颜色的数量[size=1em] |
| 函数定义[size=1em] | int getcolorNum(Mat arg0, String[] arg1, double arg2, double[] arg3)[size=1em] |
| 返回值[size=1em] | int[size=1em] |
| 参数[size=1em] | -Mat arg0: mat 格式图片-String[] arg1: 颜色数组,示例['10,9,#123233','9,9,#434323']-double arg2: 相似度-double[] arg3: 区域比例,示例[0,0,1,1][size=1em] |
| 案例[size=1em] | var mat=screen.screenShot(432,768,100).getMat(); var num=opencv.getcolorNum(mat,['#AE5454','#AE5454'],0.90,[0.0799,0.3008,0.9167,0.8242]); printl(num) [size=1em] |
| 类别[size=1em] | 内容[size=1em] |
| 功能说明[size=1em] | 计算梯度[size=1em] |
| 函数定义[size=1em] | Mat gradientProcessing(Mat arg0)[size=1em] |
| 返回值[size=1em] | Mat[size=1em] |
| 参数[size=1em] | Mat arg0[size=1em] :输入的 mat 格式图片[size=1em] |
| 案例[size=1em] | // 梯度处理示例函数function gradientProcessingExample() {printl("开始执行梯度处理示例");// 1. 截取屏幕区域并转换为Mat格式// 使用432x768分辨率,100质量的截图var mat = screen.screenShot(432, 768, 100).getMat();// 验证Mat对象是否成功创建printl("截图成功,Mat尺寸: " + mat.width() + "x" + mat.height());// 2. 调用gradientProcessing方法计算梯度// 根据API文档,该方法接收一个Mat参数并返回处理后的Matvar gradientMat = null;// 执行梯度处理gradientMat = opencv.gradientProcessing(mat);// 输出处理结果printl("梯度处理完成");printl("梯度图像尺寸: " + gradientMat.width() + "x" + gradientMat.height());// 释放原始图像资源mat = null;// 3. 处理结果输出// 输出梯度图像信息printl("梯度图像类型: " + gradientMat.type());// 释放梯度图像资源gradientMat = null;printl("梯度处理示例执行完毕");}// 主函数:运行示例function main() {printl("=== 梯度处理功能示例 ===");// 执行梯度处理示例gradientProcessingExample();printl("=== 示例执行完毕 ===");}// 立即执行主函数main(); [size=1em] |
| 类别[size=1em] | 内容[size=1em] |
| 功能说明[size=1em] | 颜色翻转[size=1em] |
| 函数定义[size=1em] | Mat invertColor(Mat arg0)[size=1em] |
| 返回值[size=1em] | Mat[size=1em] |
| 参数[size=1em] | Mat arg0[size=1em] :输入的 mat 格式图片[size=1em] |
| 案例[size=1em] | let mat:Mat=图色973264();printl(mat);function 图色973264(){//截屏并转成mat格式var mat=screen.screenShot(900,1600,100).getMat();//颜色翻转opencv.invertColor(mat)return mat;} [size=1em] |
| 类别[size=1em] | 内容[size=1em] |
| 功能说明[size=1em] | 开运算[size=1em] |
| 函数定义[size=1em] | Mat openImg(Mat arg0, int arg1)[size=1em] |
| 返回值[size=1em] | Mat[size=1em] |
| 参数[size=1em] | - Mat arg0[size=1em] :输入图片- int arg1[size=1em] :核大小[size=1em] |
| 案例[size=1em] | // 开运算功能示例// 该示例演示如何使用OpenCV的openImg函数进行图像开运算操作/** * 开运算函数 * 功能:执行图像开运算操作(先腐蚀后膨胀) * 参数说明: * - Mat arg0: 输入图像矩阵 * - int arg1: 核大小(结构元素大小)- 注意:核大小不能为0 * 返回值:开运算处理后的Mat图像 * * 开运算原理: * 开运算 = 腐蚀 + 膨胀 * 主要用于: * 1. 去除小的噪点和小物体 * 2. 分离物体 * 3. 平滑边界 * 4. 保留物体的整体形状和大小 */// 示例1:基本开运算示例 - 经过测试可正常工作function basicOpenImgExample() {printl("开始基本开运算示例");try {// 截取屏幕图像并转换为Mat格式var mat = screen.screenShot(432, 768, 100).getMat();printl("截屏成功,原始图像尺寸: " + mat.width() + "x" + mat.height());// 调用开运算函数,核大小为3(有效参数)var openedMat = opencv.openImg(mat, 3);printl("开运算完成,核大小: 3");// 输出结果信息printl("开运算结果Mat尺寸: " + openedMat.width() + "x" + openedMat.height());printl(openedMat);// 释放资源mat = null;if (openedMat != null) {openedMat = null;}printl("基本开运算示例完成");returntrue;} catch (e) {printl("执行开运算时发生错误: " + String(e));returnfalse;}}// 示例2:简化的核大小对比示例(避免使用核大小0)function simpleKernelCompareExample() {printl("开始简化的核大小对比示例");try {// 1. 获取屏幕图像var originalMat = screen.screenShot(432, 768, 100).getMat();printl("原始图像尺寸: " + originalMat.width() + "x" + originalMat.height());// 2. 使用有效核大小进行开运算(避免使用0)var kernelSizes = [1, 3, 5];for (var i = 0; i < kernelSizes.length; i++) {var kernelSize = kernelSizes;printl("正在测试核大小: " + kernelSize);try {var openedMat = opencv.openImg(originalMat, kernelSize);printl("核大小 " + kernelSize + " 的开运算完成");printl(openedMat);// 释放资源openedMat = null;} catch (e) {printl("核大小 " + kernelSize + " 处理失败: " + String(e));}}// 释放资源originalMat = null;printl("简化的核大小对比示例完成");returntrue;} catch (e) {printl("执行开运算对比时发生错误: " + String(e));returnfalse;}}// 封装函数式示例(简洁版)- 修复版function 开运算处理(mat, kernelSize) {// 验证参数有效性if (kernelSize <= 0) {printl("警告:核大小必须大于0,已自动调整为1");kernelSize = 1;}// 执行开运算return opencv.openImg(mat, kernelSize);}// 使用封装函数的示例 - 修复版function encapsulatedOpenImgExample() {printl("开始使用封装函数的开运算示例");try {// 获取图像var mat = screen.screenShot(432, 768, 100).getMat();// 使用有效核大小3代替0var resultMat = 开运算处理(mat, 3);printl("封装函数开运算结果:");printl(resultMat);// 释放资源mat = null;resultMat = null;printl("封装函数开运算示例完成");returntrue;} catch (e) {printl("执行封装函数开运算时发生错误: " + String(e));returnfalse;}}// 主函数:运行有效的开运算示例function runAllOpenImgExamples() {printl("\n===== 开始运行开运算示例 =====\n");// 运行基本示例basicOpenImgExample();printl("\n------------------------------------\n");// 运行简化的核大小对比示例simpleKernelCompareExample();printl("\n------------------------------------\n");// 运行修复后的封装函数示例encapsulatedOpenImgExample();printl("\n===== 开运算示例运行完成 =====\n");}// 运行示例runAllOpenImgExamples(); [size=1em] |
| 项目[size=1em] | 说明[size=1em] |
| 函数功能[size=1em] | 去杂点[size=1em] |
| 函数声明[size=1em] | Mat removeSmallObjects(Mat arg0, double arg1)[size=1em] |
| 返回值[size=1em] | Mat[size=1em] |
| 参数 1[size=1em] | Mat arg0[size=1em] : mat 图片[size=1em] |
| 参数 2[size=1em] | double arg1[size=1em] : 面积小于(指定面积阈值,面积小于该值的对象会被移除)[size=1em] |
| 案例[size=1em] | // removeSmallObjects函数实用示例 - 去杂点功能/** * 使用removeSmallObjects函数去除图像中的小杂点 * @returns 处理后的Mat对象 */ function 去除图像杂点() { // 1. 获取屏幕截图并转换为Mat对象 var mat = screen.screenShot(900, 1600, 100).getMat(); printl("已获取屏幕截图"); // 2. 将彩色图像转换为灰度图像 // 根据错误信息,removeSmallObjects函数要求输入图像必须是CV_8UC1格式(灰度图) var grayMat = new Mat(); opencv.cvtColor(mat, grayMat, opencv.COLOR_BGR2GRAY); printl(grayMat); // 3. 使用removeSmallObjects函数去除小杂点 // 参数2设置为100,表示移除面积小于100的对象 var resultMat = opencv.removeSmallObjects(grayMat, 100); printl(resultMat); // 4. 返回处理后的图像 return resultMat; } // 主程序调用示例 function 主程序() { try { // 调用去杂点函数 var processedMat = 去除图像杂点(); // 显示处理结果 printl(processedMat); printl("Mat尺寸: " + processedMat.width() + "x" + processedMat.height()); // 如果需要保存结果到文件 // opencv.imwrite("/sdcard/处理后图像.jpg", processedMat); return processedMat; } catch (e) { printl("处理过程中出错: " + e); returnnull; } } // 运行主程序 主程序(); [size=1em] |
| 项目[size=1em] | 说明[size=1em] |
| 函数功能[size=1em] | 先通过滤镜把图片处理成黑白图,然后提取黑色图形(分隔提取)[size=1em] |
| 函数声明[size=1em] | detect[] shapeSplit(Mat arg0, int arg1, int arg2)[size=1em] |
| 返回值[size=1em] | detect[][size=1em] |
| 参数 1[size=1em] | Mat arg0[size=1em] : mat 格式图片[size=1em] |
| 参数 2[size=1em] | int arg1[size=1em] : 结果排序(0 起点 Y 坐标排序;1 起点 X 坐标排序;2 面积排序)[size=1em] |
| 参数 3[size=1em] | int arg2[size=1em] : 排序规则(0 正序;1 倒序)[size=1em] |
| 案例[size=1em] | var result:detect[]=图色141387();if(result!=null){result[0].click();}else{print.err('查找图色141387失败')}function 图色141387(){//截屏并转成mat格式var mat=screen.screenShot(900,1600,100).getMat();//分隔提取return opencv.shapeSplit(mat,0,0)} [size=1em] |
| 项目[size=1em] | 说明[size=1em] |
| 函数功能[size=1em] | cv 文件分隔提取[size=1em] |
| 函数声明[size=1em] | detect[] shapeSplitEx(String arg0)[size=1em] |
| 返回值[size=1em] | detect[][size=1em] |
| 参数[size=1em] | String arg0[size=1em] : cv 文件名[size=1em] |
| 案例[size=1em] | //返回目标数组[size=1em] var detects=opencv.shapeSplitEx('图色710035.cv');[size=1em] if(detects!=null){[size=1em] printl(detects);[size=1em] detects[0].click();[size=1em] }[size=1em] |
| 项目[size=1em] | 说明[size=1em] |
| 函数功能[size=1em] | 通过多模板匹配定位目标,返回值是一个目标数组(模板匹配)[size=1em] |
| 函数声明[size=1em] | detect[] templateMatch(Mat arg0, String[] arg1, double arg2, double[] arg3, boolean arg4)[size=1em] |
| 返回值[size=1em] | detect[][size=1em] |
| 参数 1[size=1em] | Mat arg0[size=1em] : 图片[size=1em] |
| 参数 2[size=1em] | String[] arg1[size=1em] : 模板图片 base64 数组[size=1em] |
| 参数 3[size=1em] | double arg2[size=1em] : 相似度阈值[size=1em] |
| 参数 4[size=1em] | double[] arg3[size=1em] : 百分比区域[size=1em] |
| 参数 5[size=1em] | boolean arg4[size=1em] : 只返回最优值[size=1em] |
| 案例[size=1em] | printl('图色419496');[size=1em] var detects = auto.findImages([64位图], 0.8, 5000, 1, [0,0,1,1]);[size=1em] if(detects!=null){[size=1em] detects[0].click();[size=1em] }[size=1em] |
| 项目[size=1em] | 说明[size=1em] |
| 函数功能[size=1em] | 阈值区间内的转成黑色,阈值区间外的转成白色(二值化)[size=1em] |
| 函数声明[size=1em] | Mat threshold(Mat arg0, int arg1, int arg2)[size=1em] |
| 返回值[size=1em] | Mat[size=1em] |
| 参数 1[size=1em] | Mat arg0[size=1em] : 要处理的图片[size=1em] |
| 参数 2[size=1em] | int arg1[size=1em] : 最小阈值[size=1em] |
| 参数 3[size=1em] | int arg2[size=1em] : 最大阈值[size=1em] |
| 案例[size=1em] | let mat:Mat=图色718883();printl(mat);function 图色718883(){//截屏并转成mat格式var mat=screen.screenShot(900,1600,100).getMat();//二值化opencv.threshold(mat,53,150);return mat;} [size=1em] |
| 项目[size=1em] | 说明[size=1em] |
| 函数功能[size=1em] | 转灰度图[size=1em] |
| 函数声明[size=1em] | Mat toGray(Mat arg0)[size=1em] |
| 返回值[size=1em] | Mat[size=1em] |
| 参数[size=1em] | Mat arg0[size=1em] : mat 格式图像[size=1em] |
| 案例[size=1em] | [size=1em] let mat:Mat=图色676235();[size=1em] printl(mat);[size=1em] [size=1em] [size=1em] [size=1em] function 图色676235(){[size=1em] //截屏并转成mat格式[size=1em] var mat=screen.screenShot(900,1600,100).getMat();[size=1em] [size=1em] //转灰度图[size=1em] opencv.toGray(mat);[size=1em] return mat;[size=1em] [size=1em] }[size=1em] |
| 项目[size=1em] | 说明[size=1em] |
| 函数功能[size=1em] | 转 HSV[size=1em] |
| 函数声明[size=1em] | Mat toHSV(Mat arg0)[size=1em] |
| 返回值[size=1em] | Mat[size=1em] |
| 参数[size=1em] | Mat arg0[size=1em] : mat 格式图像[size=1em] |
| 案例[size=1em] | [size=1em] let mat:Mat=图色136443();[size=1em] printl(mat);[size=1em] [size=1em] [size=1em] [size=1em] function 图色136443(){[size=1em] //截屏并转成mat格式[size=1em] var mat=screen.screenShot(900,1600,100).getMat();[size=1em] [size=1em] //HSV颜色变换[size=1em] opencv.HSV(mat,0,0,0)[size=1em] return mat;[size=1em] [size=1em] }[size=1em] |
| 项目[size=1em] | 说明[size=1em] |
| 函数功能[size=1em] | 转 base64 字符串[size=1em] |
| 函数声明[size=1em] | String ToBase64()[size=1em] |
| 返回值[size=1em] | String[size=1em] |
| 参数[size=1em] | 无[size=1em] |
| 案例[size=1em] | /** * Mat对象toString和ToBase64方法使用示例 * 演示如何使用Mat对象的toString()和ToBase64()方法 */// 主函数function main() {printl("=== Mat toString和ToBase64方法示例 ===");// 获取屏幕截图并转换为Mat对象var mat = screen.screenShot(900, 1600, 100).getMat();printl("已获取Mat对象,尺寸: " + mat.width() + "x" + mat.height());// 使用toString()方法获取字符串表示var strResult = mat.toString();printl("Mat对象字符串表示: " + strResult);// 使用ToBase64()方法获取Base64编码var base64Result = mat.ToBase64();printl("Mat对象Base64编码: " + base64Result);// 验证结果是否有效printl("成功获取Mat对象的字符串和Base64表示");printl("=== 示例执行完毕 ===");}// 运行主程序main(); [size=1em] |
| 欢迎光临 B2B网络软件 (http://bbs.niubt.cn/) | Powered by Discuz! X3.2 |