信息发布软件,b2b软件,广告发布软件

 找回密码
 立即注册
搜索
查看: 524|回复: 0
打印 上一主题 下一主题

[宣传软件网站动态] AIWROK软件安卓总结图像视觉处理[opencv]方法

[复制链接]

780

主题

864

帖子

5536

积分

积分
5536
跳转到指定楼层
宣传软件楼主
发表于 2025-10-27 08:41:51 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

资讯缩略图:

资讯发布日期:2025-10-27

资讯发布简介:AIWROK软件安卓总结图像视觉处理[opencv]方法

资讯关键词:AIWROK软件安卓总结图像视觉处理[opencv]方法

资讯所属分类:IT资讯 

联系:

① 本信息收集于网络,如有不对的地方欢迎联系我纠正!
② 本信息免费收录,不存在价格的问题!
③ 如果您的网站也想这样出现在这里,请您加好友情链接,我当天会审核通过!

④友情链接关键字:软件网站分类目录 网址:http://www.postbbs.com/

资讯详细描述
AIWROK软件安卓总结图像视觉处理[opencv]方法
AIWROK软件安卓总结图像视觉处理[opencv]方法 b2b软件
AIWROK软件安卓总结图像视觉处理[opencv]方法 b2b软件
AIWROK软件安卓总结图像视觉处理[opencv]方法 b2b软件
方法1:getcolorNum:获取区域颜色数量  [size=1em]
类别[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]


方法2:gradientProcessing:计算梯度  [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]


方法3:invertColor:颜色翻转  [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]


方法4:openImg:开运算  [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]


方法5:removeSmallObjects:去杂点  [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]


方法7:shapeSplit:分隔提取  [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]


方法8:shapeSplitEx:cv 文件分隔提取  [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]
方法9:templateMatch:模板匹配  [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]
方法10:threshold:二值化  [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]
方法11:toGray:转灰度图  [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]


方法12:toHSV:转 HSV[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]


方法13:mat.ToBase64()方法[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]


[size=1em]

[color=var(--yq-text-primary)][backcolor=var(--yq-bg-primary)]



[color=var(--yq-text-primary)]






  1. //&#127822;交流 QQ 群 711841924 群一,苹果内测群,528816639
  2. //适用本文档ES5系统安卓 JavaScript引擎Rhino



  3. // 方法1:获取区域颜色数量 (getcolorNum)
  4. /**
  5. * 功能:从图像指定区域中,统计符合目标颜色(含相似度)的像素数量
  6. * 返回值:int - 匹配到的颜色数量
  7. * 参数:
  8. *   arg0: Mat - 输入的mat格式图片
  9. *   arg1: String[] - 目标颜色数组(格式如['#AE5454', '10,9,#123233'])
  10. *   arg2: double - 颜色相似度(0.0~1.0)
  11. *   arg3: double[] - 检测区域比例([左,上,右,下],范围0.0~1.0)
  12. */
  13. function getColorCountDemo() {
  14.     var mat = screen.screenShot(432, 768, 100).getMat();
  15.     var matchNum = opencv.getcolorNum(mat, ['#AE5454', '#AE5454'], 0.90, [0.0799, 0.3008, 0.9167, 0.8242]);
  16.     printl("匹配颜色数量:" + matchNum);
  17.     mat = null;
  18. }


  19. // 方法2:计算梯度 (gradientProcessing)
  20. /**
  21. * 功能:计算图像梯度,突出边缘信息
  22. * 返回值:Mat - 梯度处理后的图像
  23. * 参数:arg0: Mat - 输入的mat格式图片
  24. */
  25. function gradientDemo() {
  26.     var mat = screen.screenShot(432, 768, 100).getMat();
  27.     var gradientMat = opencv.gradientProcessing(mat);
  28.     printl("梯度图像尺寸:" + gradientMat.width() + "x" + gradientMat.height());
  29.     mat = null;
  30.     gradientMat = null;
  31. }


  32. // 方法3:颜色翻转 (invertColor)
  33. /**
  34. * 功能:翻转图像像素颜色(类似底片效果)
  35. * 返回值:Mat - 颜色翻转后的图像
  36. * 参数:arg0: Mat - 输入的mat格式图片
  37. */
  38. function invertColorDemo() {
  39.     function getInvertedMat() {
  40.         var mat = screen.screenShot(900, 1600, 100).getMat();
  41.         opencv.invertColor(mat);
  42.         return mat;
  43.     }
  44.     let invertedMat = getInvertedMat();
  45.     printl("颜色翻转后Mat:" + invertedMat);
  46. }


  47. // 方法4:开运算 (openImg)
  48. /**
  49. * 功能:先腐蚀后膨胀,去除小噪点、平滑边界
  50. * 返回值:Mat - 开运算后的图像
  51. * 参数:
  52. *   arg0: Mat - 输入的mat格式图片
  53. *   arg1: int - 核大小(必须>0)
  54. */
  55. function openImgDemo() {
  56.     function openImageProcess(mat, kernelSize) {
  57.         kernelSize = kernelSize <= 0 ? 1 : kernelSize;
  58.         return opencv.openImg(mat, kernelSize);
  59.     }
  60.     var mat = screen.screenShot(432, 768, 100).getMat();
  61.     var resultMat = openImageProcess(mat, 3);
  62.     printl("开运算结果尺寸:" + resultMat.width() + "x" + resultMat.height());
  63.     mat = null;
  64.     resultMat = null;
  65. }


  66. // 方法5:去杂点 (removeSmallObjects)
  67. /**
  68. * 功能:移除面积小于阈值的小物体(需输入灰度图)
  69. * 返回值:Mat - 去杂点后的图像
  70. * 参数:
  71. *   arg0: Mat - 输入的灰度mat图片(CV_8UC1)
  72. *   arg1: double - 面积阈值(<该值的物体被移除)
  73. */
  74. function removeSmallObjectsDemo() {
  75.     var mat = screen.screenShot(900, 1600, 100).getMat();
  76.     var grayMat = new Mat();
  77.     opencv.cvtColor(mat, grayMat, opencv.COLOR_BGR2GRAY);
  78.     var resultMat = opencv.removeSmallObjects(grayMat, 100);
  79.     printl("去杂点后Mat:" + resultMat);
  80.     mat = null;
  81.     grayMat = null;
  82.     resultMat = null;
  83. }


  84. // 方法6:分隔提取 (shapeSplit)
  85. /**
  86. * 功能:转黑白图后提取黑色图形,返回图形数组
  87. * 返回值:detect[] - 图形数组(含坐标、面积等,支持click())
  88. * 参数:
  89. *   arg0: Mat - 输入的mat格式图片
  90. *   arg1: int - 排序方式(0=Y坐标,1=X坐标,2=面积)
  91. *   arg2: int - 排序规则(0=正序,1=倒序)
  92. */
  93. function shapeSplitDemo() {
  94.     function extractShapes() {
  95.         var mat = screen.screenShot(900, 1600, 100).getMat();
  96.         var detects = opencv.shapeSplit(mat, 0, 0);
  97.         mat = null;
  98.         return detects;
  99.     }
  100.     var shapes = extractShapes();
  101.     if (shapes) shapes[0]?.click();
  102. }


  103. // 方法7:CV文件分隔提取 (shapeSplitEx)
  104. /**
  105. * 功能:从CV文件提取图形
  106. * 返回值:detect[] - 图形数组(支持click())
  107. * 参数:arg0: String - CV文件名(如"图色710035.cv")
  108. */
  109. function shapeSplitExDemo() {
  110.     var detects = opencv.shapeSplitEx('图色710035.cv');
  111.     if (detects) detects[0]?.click();
  112. }


  113. // 方法8:模板匹配 (templateMatch)
  114. /**
  115. * 功能:多模板匹配定位目标,返回匹配结果数组
  116. * 返回值:detect[] - 匹配结果数组
  117. * 参数:
  118. *   arg0: Mat - 输入图片
  119. *   arg1: String[] - 模板Base64数组
  120. *   arg2: double - 相似度阈值
  121. *   arg3: double[] - 区域比例([左,上,右,下])
  122. *   arg4: boolean - 是否只返回最优值
  123. */
  124. function templateMatchDemo() {
  125.     var mat = screen.screenShot(432, 768, 100).getMat();
  126.     var templates = [64位图的Base64编码]; // 替换为实际模板
  127.     var results = opencv.templateMatch(mat, templates, 0.8, [0,0,1,1], false);
  128.     if (results) results[0]?.click();
  129.     mat = null;
  130. }


  131. // 方法9:二值化 (threshold)
  132. /**
  133. * 功能:阈值内转黑色,阈值外转白色
  134. * 返回值:Mat - 二值化后的图像
  135. * 参数:
  136. *   arg0: Mat - 输入图片
  137. *   arg1: int - 最小阈值
  138. *   arg2: int - 最大阈值
  139. */
  140. function thresholdDemo() {
  141.     function getBinaryMat() {
  142.         var mat = screen.screenShot(900, 1600, 100).getMat();
  143.         opencv.threshold(mat, 53, 150);
  144.         return mat;
  145.     }
  146.     let binaryMat = getBinaryMat();
  147.     printl("二值化Mat:" + binaryMat);
  148. }


  149. // 方法10:转灰度图 (toGray)
  150. /**
  151. * 功能:彩色图转灰度图(单通道)
  152. * 返回值:Mat - 灰度图
  153. * 参数:arg0: Mat - 输入的彩色mat图片
  154. */
  155. function toGrayDemo() {
  156.     function getGrayMat() {
  157.         var mat = screen.screenShot(900, 1600, 100).getMat();
  158.         opencv.toGray(mat);
  159.         return mat;
  160.     }
  161.     let grayMat = getGrayMat();
  162.     printl("灰度图类型:" + grayMat.type());
  163. }


  164. // 方法11:转HSV (toHSV)
  165. /**
  166. * 功能:BGR颜色空间转HSV
  167. * 返回值:Mat - HSV图像
  168. * 参数:arg0: Mat - 输入的彩色mat图片
  169. */
  170. function toHSVDemo() {
  171.     function getHSVMat() {
  172.         var mat = screen.screenShot(900, 1600, 100).getMat();
  173.         opencv.toHSV(mat);
  174.         return mat;
  175.     }
  176.     let hsvMat = getHSVMat();
  177.     printl("HSV Mat:" + hsvMat);
  178. }


  179. // 方法12:Mat转Base64 (mat.ToBase64())
  180. /**
  181. * 功能:Mat图像转Base64字符串
  182. * 返回值:String - Base64编码
  183. * 调用:Mat对象直接调用(无参数)
  184. */
  185. function matToBase64Demo() {
  186.     var mat = screen.screenShot(900, 1600, 100).getMat();
  187.     var base64 = mat.ToBase64();
  188.     printl("Base64前50字符:" + base64.substring(0, 50) + "...");
  189.     mat = null;
  190. }


  191. // 方法13:findImageOneSift(SIFT算法找图)
  192. /**
  193. * 功能:基于SIFT算法查找图像匹配区域
  194. * 返回值:detect[] - 匹配结果数组
  195. * 参数:(方法签名待确认,以下为示例参数)
  196. *   arg0: Mat - 大图(待搜索图像)
  197. *   arg1: Mat - 小图(模板图像)
  198. *   arg2: int - 匹配阈值1
  199. *   arg3: int - 匹配阈值2
  200. *   arg4: float[] - 检测区域比例
  201. */
  202. function findImageOneSiftDemo() {
  203.     printl("开始SIFT算法找图示例");
  204.     try {
  205.         // 截取大图和小图
  206.         var bigMat = screen.screenShot(900, 1600, 100).getMat();
  207.         var smallMat = screen.screenShot(300, 300, 100).getMat();
  208.         
  209.         // 注意:方法签名可能需调整(原示例存在调用错误)
  210.         // var results = opencv.findImageOneSift(bigMat, smallMat, 60, 50, [0,0,1,1]);
  211.         printl("SIFT找图需确认方法签名后调用");
  212.         
  213.         // 释放资源
  214.         bigMat = null;
  215.         smallMat = null;
  216.     } catch (e) {
  217.         printl("SIFT找图错误:" + e);
  218.     }
  219. }


  220. // 方法14:findImagesEx(cv文件找图)
  221. /**
  222. * 功能:从指定CV文件中查找匹配图形
  223. * 返回值:detect[] - 匹配结果数组(支持click())
  224. * 参数:arg0: String - CV文件名(如"图色564976.cv")
  225. */
  226. function findImagesExDemo() {
  227.     // 从CV文件找图
  228.     var detects = opencv.findImagesEx('图色564976.cv');
  229.     if (detects && detects.length > 0) {
  230.         printl("找到" + detects.length + "个匹配图形");
  231.         detects[0].click(); // 点击第一个结果
  232.     } else {
  233.         printl("未找到匹配图形");
  234.     }
  235. }


  236. // 方法15:findMultiColor(多点找色)
  237. /**
  238. * 功能:根据基点和多个颜色点查找匹配区域
  239. * 返回值:detect[] - 匹配结果数组(支持click())
  240. * 参数:
  241. *   arg0: Mat - 输入图片
  242. *   arg1: String - 基点(格式"x,y,#色值",如"546,325,#51752F")
  243. *   arg2: String[] - 多色点数组(同基点格式)
  244. *   arg3: int - 偏色阈值
  245. *   arg4: int - 偏移阈值
  246. *   arg5: float[] - 检测区域比例([左,上,右,下])
  247. *   arg6: double - 相似度
  248. */
  249. function findMultiColorDemo() {
  250.     function 图色850610() {
  251.         var mat = screen.screenShot(900, 1600, 100).getMat();
  252.         // 基点+多色点找色
  253.         return opencv.findMultiColor(mat, '546,325,#51752F', ['552,355,#429D60', '534,367,#63FA87'], 2, 5, [0,0,1,1], 0.95);
  254.     }
  255.     var result = 图色850610();
  256.     if (result) {
  257.         result[0].click();
  258.     } else {
  259.         print.err('查找图色850610失败');
  260.     }
  261. }


  262. // 方法16:findMultiColorEx(cv文件多点找色)
  263. /**
  264. * 功能:从指定CV文件中执行多点找色
  265. * 返回值:detect[] - 匹配结果数组(支持click())
  266. * 参数:arg0: String - CV文件名(如"图色850610.cv")
  267. */
  268. function findMultiColorExDemo() {
  269.     // 从CV文件执行多点找色
  270.     var detects = opencv.findMultiColorEx('图色850610.cv');
  271.     if (detects && detects.length > 0) {
  272.         printl("找到" + detects.length + "个颜色匹配点");
  273.         detects[0].click(); // 点击第一个结果
  274.     } else {
  275.         printl("未找到颜色匹配点");
  276.     }
  277. }


  278. // 方法17:gaussianBlur(高斯滤波)
  279. /**
  280. * 功能:对图像进行高斯滤波,平滑边缘、去除噪点
  281. * 返回值:Mat - 滤波后的图像
  282. * 参数:
  283. *   arg0: Mat - 输入图像
  284. *   arg1: int - 卷积核大小(影响平滑程度)
  285. */
  286. function gaussianBlurDemo() {
  287.     function 图色770562() {
  288.         var mat = screen.screenShot(900, 1600, 100).getMat();
  289.         // 高斯滤波(卷积核5)
  290.         opencv.gaussianBlur(mat, 5);
  291.         return mat;
  292.     }
  293.     let mat = 图色770562();
  294.     printl("高斯滤波后Mat:" + mat);
  295.     mat = null;
  296. }


  297. // 方法18:getAllShap(获取所有Shape)
  298. /**
  299. * 功能:从图像中提取所有形状(Shape)
  300. * 返回值:ArrayList - 包含所有形状的列表
  301. * 参数:arg0: Mat - 输入图像(建议先转灰度图)
  302. */
  303. function getAllShapDemo() {
  304.     printl("开始获取所有Shape示例");
  305.     try {
  306.         var mat = screen.screenShot(900, 1600, 100).getMat();
  307.         // 转灰度图预处理
  308.         var grayMat = new Mat();
  309.         opencv.cvtColor(mat, grayMat, opencv.COLOR_RGB2GRAY);
  310.         
  311.         // 获取所有Shape
  312.         var shapes = opencv.getAllShap(grayMat);
  313.         if (shapes) {
  314.             printl("共获取到" + shapes.size() + "个Shape");
  315.         } else {
  316.             printl("未获取到Shape");
  317.         }
  318.         
  319.         // 释放资源
  320.         mat = null;
  321.         grayMat = null;
  322.         shapes = null;
  323.     } catch (e) {
  324.         printl("获取Shape错误:" + e);
  325.     }
  326. }


  327. // 方法19:getContours(获取轮廓图)
  328. /**
  329. * 功能:从图像中提取轮廓并返回轮廓图
  330. * 返回值:Mat - 包含轮廓的图像
  331. * 参数:arg0: Mat - 输入图像(建议先转灰度图)
  332. */
  333. function getContoursDemo() {
  334.     printl("开始获取轮廓图示例");
  335.     try {
  336.         var mat = screen.screenShot(900, 1600, 100).getMat();
  337.         // 转灰度图预处理
  338.         var grayMat = new Mat();
  339.         opencv.cvtColor(mat, grayMat, opencv.COLOR_RGB2GRAY);
  340.         
  341.         // 获取轮廓
  342.         var contoursMat = opencv.getContours(grayMat);
  343.         if (contoursMat) {
  344.             printl("轮廓图尺寸:" + contoursMat.width() + "x" + contoursMat.height());
  345.         } else {
  346.             printl("未获取到轮廓");
  347.         }
  348.         
  349.         // 释放资源
  350.         mat = null;
  351.         grayMat = null;
  352.         contoursMat = null;
  353.     } catch (e) {
  354.         printl("获取轮廓错误:" + e);
  355.     }
  356. }


  357. // 方法20:coverageArea(图片抹除)
  358. /**
  359. * 功能:对图像指定区域进行抹除(填充指定灰度值)
  360. * 返回值:Mat - 抹除后的图像
  361. * 参数:
  362. *   arg0: Mat - 输入的mat格式图片
  363. *   arg1: double - 填充灰度值(0~255,0为黑色,255为白色)
  364. *   arg2: int[] - 抹除区域比例([左,上,右,下],范围0~1,如[0,0,1,1]表示全图)
  365. */
  366. function coverageAreaDemo() {
  367.     printl("开始图片抹除示例");
  368.     try {
  369.         // 截取400x400屏幕区域转Mat
  370.         var mat = screen.screenShot(400, 400, 100).getMat();
  371.         printl("原始图像尺寸:" + mat.width() + "x" + mat.height());
  372.         
  373.         // 定义抹除区域(全图)
  374.         var eraseRegion = [0, 0, 1, 1];
  375.         // 执行抹除(填充灰度值0,即黑色)
  376.         var resultMat = opencv.coverageArea(mat, 0, eraseRegion);
  377.         
  378.         printl("抹除后图像信息:" + resultMat);
  379.         // 释放资源
  380.         mat = null;
  381.         resultMat = null;
  382.     } catch (e) {
  383.         printl("图片抹除错误:" + e);
  384.     }
  385.     printl("图片抹除示例结束");
  386. }


  387. // 方法21:dilateImage(图像膨胀)
  388. /**
  389. * 功能:对图像进行膨胀处理,扩大亮区、连接断裂区域
  390. * 返回值:Mat - 膨胀后的图像
  391. * 参数:
  392. *   arg0: Mat - 输入的mat格式图片
  393. *   arg1: int - 水平膨胀系数(值越大,水平方向膨胀越明显)
  394. *   arg2: int - 竖直膨胀系数(值越大,竖直方向膨胀越明显)
  395. */
  396. function dilateImageDemo() {
  397.     // 封装截图+膨胀处理函数
  398.     function 图色930021() {
  399.         var mat = screen.screenShot(900, 1600, 100).getMat();
  400.         // 水平+竖直膨胀系数均为4
  401.         opencv.dilateImage(mat, 4, 4);
  402.         return mat;
  403.     }
  404.     // 执行膨胀并输出结果
  405.     let matDilate = 图色930021();
  406.     printl("图像膨胀后信息:" + matDilate);
  407.     matDilate = null;
  408. }


  409. // 方法22:drawRect(Shape绘制)
  410. /**
  411. * 功能:在图像上绘制矩形Shape(参数与函数声明待补充,以下为常见功能示例)
  412. * 返回值:Mat - 绘制后的图像(推测)
  413. * 参数:(推测,需根据实际接口调整)
  414. *   arg0: Mat - 输入的mat格式图片
  415. *   arg1: int[] - 矩形坐标(如[x1,y1,x2,y2],左上角与右下角坐标)
  416. *   arg2: int[] - 线条颜色(如[B,G,R],默认可能为红色)
  417. *   arg3: int - 线条宽度(默认可能为1)
  418. */
  419. function drawRectDemo() {
  420.     printl("开始Shape矩形绘制示例(参数待确认)");
  421.     try {
  422.         var mat = screen.screenShot(900, 1600, 100).getMat();
  423.         // 推测参数:图像、矩形坐标[100,100,300,300]、红色[0,0,255]、线条宽度2
  424.         // 注意:实际函数名与参数需按真实接口调整
  425.         // opencv.drawRect(mat, [100,100,300,300], [0,0,255], 2);
  426.         printl("矩形绘制需按实际函数接口调整参数");
  427.         mat = null;
  428.     } catch (e) {
  429.         printl("Shape绘制错误:" + e);
  430.     }
  431. }


  432. // 方法23:erodeImage(图像腐蚀)
  433. /**
  434. * 功能:对图像进行腐蚀处理,缩小亮区、去除小噪点
  435. * 返回值:Mat - 腐蚀后的图像
  436. * 参数:
  437. *   arg0: Mat - 输入的mat格式图片
  438. *   arg1: int - 水平腐蚀系数(值越大,水平方向腐蚀越明显)
  439. *   arg2: int - 竖直腐蚀系数(值越大,竖直方向腐蚀越明显)
  440. */
  441. function erodeImageDemo() {
  442.     // 封装截图+腐蚀处理函数
  443.     function 图色152593() {
  444.         var mat = screen.screenShot(900, 1600, 100).getMat();
  445.         // 水平+竖直腐蚀系数均为4
  446.         opencv.erodeImage(mat, 4, 4);
  447.         return mat;
  448.     }
  449.     // 执行腐蚀并输出结果
  450.     let matErode = 图色152593();
  451.     printl("图像腐蚀后信息:" + matErode);
  452.     matErode = null;
  453. }


  454. // 方法24:filtersEx(cv文件滤镜)
  455. /**
  456. * 功能:加载指定CV文件中的滤镜配置,对图像应用滤镜效果
  457. * 返回值:Mat - 应用滤镜后的图像
  458. * 参数:arg0: String - CV滤镜文件名(如"图色358384.cv",需确保文件路径正确)
  459. */
  460. function filtersExDemo() {
  461.     // 加载CV文件滤镜并应用
  462.     var matFilter = opencv.filtersEx('图色358384.cv');
  463.     if (matFilter) {
  464.         printl("滤镜应用后图像尺寸:" + matFilter.width() + "x" + matFilter.height());
  465.         printl("滤镜图像信息:" + matFilter);
  466.     } else {
  467.         printl("CV文件滤镜加载失败");
  468.     }
  469.     matFilter = null;
  470. }


  471. // 方法25:findImageOneKAZE(KAZE算法找图)
  472. /**
  473. * 功能:基于KAZE算法查找图像匹配区域(比SIFT更稳定,无需专利授权)
  474. * 返回值:detect - 单个匹配结果(含坐标、相似度等)
  475. * 参数:
  476. *   arg0: Mat - 大图(待搜索的目标图像)
  477. *   arg1: Mat - 小图(模板图像)
  478. *   arg2: Mat - 结果存储Mat(用于辅助计算,推测)
  479. */
  480. function findImageOneKAZEDemo() {
  481.     printl("开始KAZE算法找图示例");
  482.     try {
  483.         // 读取本地模板图和目标图(路径需根据实际存储调整)
  484.         var templateImg = new image();
  485.         templateImg.read("sdcard/auto/1.jpg"); // 小图(模板)
  486.         var targetImg = new image();
  487.         targetImg.read("sdcard/auto/2.jpg"); // 大图(目标)
  488.         
  489.         // 创建辅助结果Mat
  490.         var resultMat = new Mat();
  491.         // 执行KAZE找图
  492.         var resKAZE = opencv.findImageOneKAZE(targetImg.getMat(), templateImg.getMat(), resultMat);
  493.         
  494.         if (resKAZE) {
  495.             printl("KAZE找图结果:" + resKAZE);
  496.         } else {
  497.             printl("KAZE找图未匹配到目标");
  498.         }
  499.         
  500.         // 释放资源
  501.         templateImg = null;
  502.         targetImg = null;
  503.         resultMat = null;
  504.     } catch (e) {
  505.         printl("KAZE找图错误:" + e);
  506.     }
  507. }


  508. // 方法26:HSV颜色变换(HSV通道调整)
  509. /**
  510. * 功能:对图像进行HSV通道颜色变换,调整色相、饱和度、对比度
  511. * 返回值:Mat - 处理后的图像
  512. * 参数:
  513. *   arg0: Mat - 输入的mat格式图像
  514. *   arg1: int - 色相参数(调整颜色基调)
  515. *   arg2: int - 饱和度参数(调整颜色鲜艳程度)
  516. *   arg3: int - 对比度参数(调整明暗对比)
  517. */
  518. function hsvTransformDemo() {
  519.     function hsvTransform() {
  520.         var mat = screen.screenShot(432, 768, 100).getMat();
  521.         // 调整色相17、饱和度17、对比度17
  522.         opencv.HSV(mat, 17, 17, 17);
  523.         printl("HSV变换后图像:" + mat);
  524.         return mat;
  525.     }
  526.     let hsvResult = hsvTransform();
  527.     hsvResult = null;
  528. }


  529. // 方法27:对比度调整(adjustContrast)
  530. /**
  531. * 功能:调整图像对比度,阈值控制强弱(值越大对比度越强)
  532. * 返回值:Mat - 调整后的图像
  533. * 参数:
  534. *   arg0: Mat - 输入的mat格式图像
  535. *   arg1: double - 对比度阈值(>1增强,<1减弱,1不变)
  536. */
  537. function adjustContrastDemo() {
  538.     function adjustContrast() {
  539.         var mat = screen.screenShot(432, 768, 100).getMat();
  540.         // 降低对比度(阈值0.5)
  541.         opencv.adjustContrast(mat, 0.5);
  542.         printl("对比度调整后图像:" + mat);
  543.         return mat;
  544.     }
  545.     let contrastResult = adjustContrast();
  546.     contrastResult = null;
  547. }


  548. // 方法28:Bitmap转Mat(bitmapToMat)
  549. /**
  550. * 功能:将Bitmap格式图像转换为OpenCV处理用的Mat格式
  551. * 返回值:Mat - 转换后的图像
  552. * 参数:arg0: Bitmap - 输入的Bitmap格式图像
  553. */
  554. function bitmapToMatDemo() {
  555.     function bitmapToMat() {
  556.         // 获取屏幕截图的Bitmap
  557.         var screenshot = screen.screenShot(432, 768, 100);
  558.         var bmp = screenshot.getBitmap();
  559.         // 转换为Mat
  560.         var mat = opencv.bitmapToMat(bmp);
  561.         printl("Bitmap转Mat结果:" + mat);
  562.         return mat;
  563.     }
  564.     let matFromBmp = bitmapToMat();
  565.     matFromBmp = null;
  566. }


  567. // 方法29:颜色过滤(colorFilter)
  568. /**
  569. * 功能:保留设定的目标颜色,过滤其他颜色(适用于固定颜色目标筛选)
  570. * 返回值:Mat - 过滤后的图像
  571. * 参数:
  572. *   arg0: Mat - 输入的mat格式图像
  573. *   arg1: String[] - 目标颜色数组(格式["#RRGGBB",...])
  574. *   arg2: int - 匹配阈值(允许的颜色偏差,值越大容错性越强)
  575. */
  576. function colorFilterDemo() {
  577.     function colorFilter() {
  578.         var mat = screen.screenShot(432, 768, 100).getMat();
  579.         // 目标颜色:土黄、金黄等
  580.         var colors = ["#615018", "#D9C15D", "#010000", "#F4C51F"];
  581.         // 过滤颜色(阈值2,允许轻微偏差)
  582.         mat = opencv.colorFilter(mat, colors, 2);
  583.         printl("颜色过滤后图像:" + mat);
  584.         return mat;
  585.     }
  586.     let filterResult = colorFilter();
  587.     filterResult = null;
  588. }


  589. // 方法30:区域截图(extractRegion)
  590. /**
  591. * 功能:按百分比裁剪图像或保留指定区域(区域外变白)
  592. * 返回值:Mat - 处理后的区域图像
  593. * 参数:
  594. *   arg0: Mat - 输入的mat格式图像
  595. *   arg1: double[] - 区域范围([左上角x%,左上角y%,右下角x%,右下角y%],范围0~1)
  596. *   arg2: boolean - 是否裁剪(true=裁剪为区域大小,false=区域外变白保留原图大小)
  597. */
  598. function extractRegionDemo() {
  599.     function extractRegion() {
  600.         var mat = screen.screenShot(432, 768, 100).getMat();
  601.         // 区域:左上角(3.935%,16.406%)到右下角(53.472%,63.281%)
  602.         var region = [0.03935, 0.16406, 0.53472, 0.63281];
  603.         // 区域外变白(不裁剪)
  604.         opencv.extractRegion(mat, region, false);
  605.         printl("区域处理后图像:" + mat);
  606.         return mat;
  607.     }
  608.     let regionResult = extractRegion();
  609.     regionResult = null;
  610. }


  611. // 方法31:面积过滤(inArea)
  612. /**
  613. * 功能:保留图像中面积在指定范围内的区域,过滤过小/过大区域
  614. * 返回值:Mat - 过滤后的图像
  615. * 参数:
  616. *   arg0: Mat - 输入的mat格式图像
  617. *   arg1: double - 最小面积(保留≥该值的区域)
  618. *   arg2: double - 最大面积(保留≤该值的区域)
  619. */
  620. function inAreaDemo() {
  621.     function inArea() {
  622.         var mat = screen.screenShot(432, 768, 100).getMat();
  623.         // 保留面积1~10000的区域
  624.         opencv.inArea(mat, 1, 10000);
  625.         printl("面积过滤后图像:" + mat);
  626.         return mat;
  627.     }
  628.     let areaResult = inArea();
  629.     areaResult = null;
  630. }


  631. // 方法32:边缘提取(Canny)
  632. /**
  633. * 功能:基于Canny算法提取图像边缘(高阈值通常为低阈值2~3倍)
  634. * 返回值:Mat - 边缘提取后的图像
  635. * 参数:
  636. *   arg0: Mat - 输入的mat格式图像
  637. *   arg1: double - 低阈值(控制弱边缘检测)
  638. *   arg2: double - 高阈值(控制强边缘检测,通常为低阈值2~3倍)
  639. */
  640. function cannyEdgeDemo() {
  641.     function cannyEdge() {
  642.         var mat = screen.screenShot(432, 768, 100).getMat();
  643.         // 低阈值50,高阈值100(符合2倍关系)
  644.         opencv.Canny(mat, 50, 100);
  645.         printl("边缘提取后图像:" + mat);
  646.         return mat;
  647.     }
  648.     let cannyResult = cannyEdge();
  649.     cannyResult = null;
  650. }


  651. // 方法33:OCR识别(OCR)
  652. /**
  653. * 功能:通过训练字库识别指定区域文字,返回识别结果
  654. * 返回值:ocrResult - 含识别文字及位置信息的对象
  655. * 参数:
  656. *   arg0: Mat - 输入的mat格式图像
  657. *   arg1: String - 字库路径(如"图色976442.ocr")
  658. *   arg2: double - 相似度(0~1,值越高匹配越严格)
  659. *   arg3: int - 预期文字数(0表示不限制)
  660. *   arg4: double[] - 识别区域([左,上,右,下]比例,0~1)
  661. */
  662. function ocrDemo() {
  663.     function ocr() {
  664.         var mat = screen.screenShot(432, 768, 100).getMat();
  665.         // 识别区域:全图
  666.         var ocrRegion = [0, 0, 1, 1];
  667.         // 调用OCR:字库"图色976442.ocr",相似度0.8
  668.         var ocrRes = opencv.OCR(mat, '图色976442.ocr', 0.8, 0, ocrRegion);
  669.         ocrRes ? printl("OCR识别结果:" + ocrRes.getAllString()) : print.err('OCR识别失败');
  670.         return ocrRes;
  671.     }
  672.     let ocrResult = ocr();
  673.     ocrResult = null;
  674. }


  675. // 方法34:CV文件OCR(OCREx)
  676. /**
  677. * 功能:通过预定义的CV文件(含字库和区域)进行OCR识别
  678. * 返回值:ocrResult - 含识别结果的对象
  679. * 参数:arg0: String - CV文件路径(如"图色598321.cv")
  680. */
  681. function ocrExDemo() {
  682.     function ocrEx() {
  683.         // 读取CV文件并识别
  684.         var ocrExRes = opencv.OCREx('图色598321.cv');
  685.         ocrExRes ? printl("CV文件OCR结果:" + ocrExRes.getAllString()) : print.err('CV文件OCR失败');
  686.         return ocrExRes;
  687.     }
  688.     let cvOcrResult = ocrEx();
  689.     cvOcrResult = null;
  690. }


  691. // 方法35:图像平滑(Smooth)
  692. /**
  693. * 功能:减少图像噪声、模糊图像(通过滤波和去毛边实现)
  694. * 返回值:Mat - 平滑后的图像
  695. * 参数:
  696. *   arg0: Mat - 输入的mat格式图像
  697. *   arg1: int - 滤波值(值越大平滑效果越强)
  698. *   arg2: int - 去毛边大小(控制边缘平滑程度)
  699. */
  700. function smoothDemo() {
  701.     function smooth() {
  702.         var mat = screen.screenShot(432, 768, 100).getMat();
  703.         // 滤波值3,去毛边2
  704.         var smoothMat = opencv.Smooth(mat, 3, 2);
  705.         printl("平滑处理后图像:" + smoothMat);
  706.         return smoothMat;
  707.     }
  708.     let smoothResult = smooth();
  709.     smoothResult = null;
  710. }


  711. // 方法36:多点比色(checkColors)
  712. /**
  713. * 功能:验证图像中多个指定坐标的颜色是否符合预期(全匹配返回true)
  714. * 返回值:boolean - 是否全匹配
  715. * 参数:
  716. *   arg0: Mat - 输入的mat格式图像
  717. *   arg1: String[] - 目标点数组(格式"x,y,#RRGGBB",如"325,317,#F4C51F")
  718. *   arg2: int - 颜色误差(允许的色值偏差)
  719. *   arg3: int - 坐标误差(允许的位置偏差)
  720. *   arg4: double - 相似度(0~1,匹配严格程度)
  721. */
  722. function checkColorsDemo() {
  723.     function checkColors() {
  724.         var mat = screen.screenShot(900, 1600, 100).getMat();
  725.         // 目标点:坐标+颜色
  726.         var points = ['325,317,#F4C51F', '357,364,#070200', '336,345,#100500', '356,386,#F4C51F'];
  727.         // 颜色误差2,坐标误差5,相似度0.95
  728.         var isMatch = opencv.checkColors(mat, points, 2, 5, 0.95);
  729.         isMatch ? printl('多点比色成功') : print.err('多点比色失败');
  730.         return isMatch;
  731.     }
  732.     let colorCheckResult = checkColors();
  733. }


  734. // 方法37:CV文件多点比色(checkColorsEx)
  735. /**
  736. * 功能:通过预定义的CV文件(含多点坐标和颜色)验证匹配
  737. * 返回值:boolean - 是否匹配成功
  738. * 参数:arg0: String - CV文件路径(如"图色246814.cv")
  739. */
  740. function checkColorsExDemo() {
  741.     function checkColorsEx() {
  742.         // 基于CV文件验证多点比色
  743.         var isExMatch = opencv.checkColorsEx('图色246814.cv');
  744.         isExMatch ? printl('CV文件多点比色成功') : printl('CV文件多点比色失败');
  745.         return isExMatch;
  746.     }
  747.     let cvColorCheckResult = checkColorsEx();
  748. }


  749. // 方法38:闭运算(closeImg)
  750. /**
  751. * 功能:先膨胀后腐蚀,用于填充图像小孔、连接邻近区域
  752. * 返回值:Mat - 闭运算处理后的图像
  753. * 参数:
  754. *   arg0: Mat - 输入的mat格式图像
  755. *   arg1: int - 核大小(值越大效果越强)
  756. */
  757. function closeImgDemo() {
  758.     function closeImg() {
  759.         var mat = screen.screenShot(900, 1600, 100).getMat();
  760.         // 闭运算:核大小3
  761.         opencv.closeImg(mat, 3);
  762.         printl("闭运算后图像:" + mat);
  763.         return mat;
  764.     }
  765.     let closeResult = closeImg();
  766.     closeResult = null;
  767. }
复制代码




untoAIWROK软件start.js简单H5直接调用nextAIWROK软件技术分享苹果IOS系统获取外部IP
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

相关导读
群发软件AIWROK软件苹果脚本案例1空白站位[Space]方法
AIWROK软件苹果脚本案例1空白站位[Space]方法
群发软件AIWROK软件苹查系统复选框用法
AIWROK软件苹查系统复选框用法
群发软件苹果AIWROK实例单选按钮组类[RadioButtonGroup]完整综合示例
苹果AIWROK实例单选按钮组类[RadioButtonGroup]完整综合示例
群发软件AIWROK软件苹果实例UI-垂直容器[Vertical]高级综合示例
AIWROK软件苹果实例UI-垂直容器[Vertical]高级综合示例
群发软件IOS苹果脚本View的完整功能实例
IOS苹果脚本View的完整功能实例
群发软件AIWROK苹果系统实例演示1标签类[Label]方法
AIWROK苹果系统实例演示1标签类[Label]方法
信息发布软件AIWROK软件苹果UI按钮Button方法示例
AIWROK软件苹果UI按钮Button方法示例
信息发布软件AIWROK软件苹果TAB界面视图示例
AIWROK软件苹果TAB界面视图示例
信息发布软件AIWROK苹果系统自带view视图简洁UI界面示例
AIWROK苹果系统自带view视图简洁UI界面示例
信息发布软件汇集HID安卓输入文字的方法和复制粘贴示例
汇集HID安卓输入文字的方法和复制粘贴示例
信息发布软件AIWROK软件找字与OCR方法汇总示例
AIWROK软件找字与OCR方法汇总示例
信息发布软件AIWROK软件找图方法汇总示例
AIWROK软件找图方法汇总示例
信息发布软件AIWROK软件滑动方法集合示例
AIWROK软件滑动方法集合示例
信息发布软件AIWROK软件安卓AIWROK汇集软件点击
AIWROK软件安卓AIWROK汇集软件点击
信息发布软件苹果系统点击方法综合示例
苹果系统点击方法综合示例
信息发布软件AIWROK苹果系统找图方法完整示例集合
AIWROK苹果系统找图方法完整示例集合
信息发布软件苹果系统找图方法完整示例集合
苹果系统找图方法完整示例集合
信息发布软件苹果IOS系统找字OCR方法例子
苹果IOS系统找字OCR方法例子
信息发布软件AIWORK软件数组高级示例
AIWORK软件数组高级示例
信息发布软件AIWROK软件运算符封装库示例
AIWROK软件运算符封装库示例
信息发布软件AIWROK软件语法运行小示例
AIWROK软件语法运行小示例
信息发布软件AIWROK软件JS循环小示例
AIWROK软件JS循环小示例
信息发布软件AIWROK软件H5网页被主脚本获取值用法
AIWROK软件H5网页被主脚本获取值用法
信息发布软件AIWROK软件创建可暂停恢复的多线程任务
AIWROK软件创建可暂停恢复的多线程任务
信息发布软件AIWROK软件类型转换方法例子
AIWROK软件类型转换方法例子
信息发布软件AIWROK软件H5脚本执行与进度显示
AIWROK软件H5脚本执行与进度显示 .
信息发布软件AIWROK软件根据时间段执行异步任务支持多线程并行处理
AIWROK软件根据时间段执行异步任务支持多线程并行处理
信息发布软件H5自动开关执行脚本功能演示
H5自动开关执行脚本功能演示
信息发布软件AIWROK软件H5单选脚本运行示例
AIWROK软件H5单选脚本运行示例
信息发布软件H5任务脚本选择与执行中心
H5任务脚本选择与执行中心
信息发布软件H5里CheckBox控件演示
H5里CheckBox控件演示
信息发布软件AIWROK软件正则用法实际例子
AIWROK软件正则用法实际例子
信息发布软件AIWROK软件权限管理器实现
AIWROK软件权限管理器实现
信息发布软件AIWORK软件节点方法无碍示例子
AIWORK软件节点方法无碍示例子
信息发布软件JSON.stringify 和 JSON.parse 完整示例
JSON.stringify 和 JSON.parse 完整示例
信息发布软件AIWROK软件展示JavaScript各种语句标识符的用法
AIWROK软件展示JavaScript各种语句标识符的用法
信息发布软件JS巧妙地组合使用各种条件语句
JS巧妙地组合使用各种条件语句
信息发布软件AIWROK手机数据库MySQL数据库截图片批量上传操作脚本
AIWROK手机数据库MySQL数据库截图片批量上传操作脚本
信息发布软件HID中文输入智能打字功能
HID中文输入智能打字功能
信息发布软件AIWROK软件对象工具函数库例子
AIWROK软件对象工具函数库例子
信息发布软件AIWROK软件H5交互演示黄色主题
AIWROK软件H5交互演示黄色主题
信息发布软件H5单按钮执行脚本示例
H5单按钮执行脚本示例
信息发布软件苹果H5界面完整调用脚本示例
苹果H5界面完整调用脚本示例
信息发布软件AIWROK软件平台设备信息全面检测工具例子
AIWROK软件平台设备信息全面检测工具例子
信息发布软件AIWROK创建和放大日志窗口并展示动态内容
AIWROK创建和放大日志窗口并展示动态内容
信息发布软件AIWROK软件device相关方法获取设备信息例子
AIWROK软件device相关方法获取设备信息例子[/backcolor]
信息发布软件数据库MySQL实时内容随机调用
数据库MySQL实时内容随机调用
信息发布软件AIWROK软件分享一个特效苹果H5页面
AIWROK软件分享一个特效苹果H5页面
信息发布软件数据库MYQ业务流程心跳程序启动
数据库MYQ业务流程心跳程序启动
信息发布软件数据库MySQL功能支持创建表插入中文数据查询删除功能例子
数据库MySQL功能支持创建表插入中文数据查询删除功能例子
信息发布软件AIWROK软件Zip 高级操作复杂示例
AIWROK软件Zip 高级操作复杂示例
信息发布软件AIWROK软件txt_文件读写方法小结
AIWROK软件txt_文件读写方法小结
信息发布软件AIWROK软件file文件操作方法小结
AIWROK软件file文件操作方法小结
信息发布软件AIWORK软件配置读写H5演示配套脚本
AIWORK软件配置读写H5演示配套脚本
信息发布软件AIWROK配置读写功能演示示例
AIWROK配置读写功能演示示例
信息发布软件AIWROK截图缓存工具
AIWROK截图缓存工具
信息发布软件AIWROK线程许可证工具
AIWROK线程许可证工具
信息发布软件整理了AIWROK环境下常用的Date对象和sleep对象方法
整理了AIWROK环境下常用的Date对象和sleep对象方法
信息发布软件FastUI界面普通用法
FastUI界面普通用法
信息发布软件FastUI界面类[window]方法小结
FastUI界面类[window]方法小结 方法 1:close(关闭指定窗口)方法 2:closeAll(关闭所有窗口)方法 3:loadUI(加载 UI 界面)方法 4:onClose(监听窗口关闭事件)方法 5:onLoad(监听窗口加载事件)方法 6:setFull(设置窗口全屏)方法 7:setHeight(设置窗口高度)方法 8:setHidden(隐藏窗口)方法 9:setLeft(设置窗口 X 轴坐标)方法 10:setTop(设置窗口 Y 轴坐标)方法 11:setVisable(显示隐藏的窗口)方
信息发布软件AIWROK软件按钮监听UI界面与事件监听功能演示
AIWROK软件按钮监听UI界面与事件监听功能演示.
信息发布软件AWIROK软件多选[uiCheckBox]方法小结
AWIROK软件多选方法小结 方法一:findByID 加载多选控件方法二:getAllChecked 获取所有选中项方法三:getAllSelect 获取所有选项方法四:getChecked 获取某个选项是否选中方法五:setChecked 设置某个选项是否选中方法六:setCheckeds 设置多个选项是否选中方法七:setHeight 设置高度
信息发布软件AIWROK日志演示开启日志显示 → 放大 → 关闭代码
AIWROK日志演示开启日志显示 → 放大 → 关闭代码
信息发布软件&#127983;AIWROK数组方法高级应用案例
🏯AIWROK数组方法高级应用案例
信息发布软件AIWROK软件日志悬浮窗简化版自动切换位置
AIWROK软件日志悬浮窗简化版自动切换位置

QQ|( 京ICP备09078825号 )

本网站信息发布软件,是可以发布论坛,发送信息到各大博客,各大b2b软件自动发布,好不夸张的说:只要手工能发在电脑打开IE能发的网站,用这个宣传软件就可以仿制动作,进行推送发到您想发送的B2B网站或是信息发布平台上,不管是后台,还是前台,都可以进行最方便的广告发布,这个广告发布软件,可以按月购买,还可以试用软件,对网站的验证码也可以完全自动对信息发布,让客户自动找上门,使企业轻松实现b2b发布,这个信息发布软件,均是本站原创正版开发,拥有正版的血统,想要新功能,欢迎提意见给我,一好的分类信息群发软件在手,舍我其谁。QQ896757558

GMT+8, 2026-3-3 09:07 , Processed in 0.567708 second(s), 51 queries .

宣传软件--信息发布软件--b2b软件广告发布软件

快速回复 返回顶部 返回列表