autojs对红线蓝线之间的部分进行颜色填充

简介: 牙叔教程 简单易懂

牙叔教程 简单易懂

群里有人问

原图

填充颜色后

思路

提取蓝线--> 提取红线--> 提取坐标--> 填充颜色

提取蓝色

  1. 使用ps拾色器或者其他软件的吸管, 多吸取几个蓝色点
    然后分解颜色的rgb分量, 代入到方法中


let lowColor = colors.rgb(lowRGB.red, lowRGB.green, lowRGB.blue);
let highColor = colors.rgb(highRGB.red, highRGB.green, highRGB.blue);
let newImg = images.inRange(img, lowColor, highColor);


提取出来的蓝色区域


  1. 观察到, 中间有些位置是断开的, 我们稍微膨胀一下
Imgproc.morphologyEx(
  newImg.mat,
  mat,
  Imgproc.MORPH_DILATE,
  Imgproc.getStructuringElement(Imgproc.MORPH_RECT, Size(3, 3))
);



  1. 画出该图片的轮廓, 轮廓用绿色填充
Imgproc.findContours(mat, contours, hierarchy, Imgproc.RETR_EXTERNAL, Imgproc.CHAIN_APPROX_SIMPLE, Point());
Imgproc.drawContours(img.mat, contours, -1, Scalar(0, 255, 0, 255), -1, 8);



  1. 获取轮廓的最小外接矩形
let box = Imgproc.minAreaRect(new MatOfPoint2f(contours.get(0).toArray()));
for (let j = 0; j < 4; j++) {
  Imgproc.line(img.mat, rect[j], rect[(j + 1) % 4], Scalar(0, 255, 0, 255), 1, 8);
}



  1. 提取矩形两端的坐标
    一端取第一个点, 另一端取第三个点
    画出两个点所在的直线
Imgproc.line(img.mat, rect[0], rect[2], Scalar(0, 255, 0, 255), 1, 8);



  1. 同理获取蓝线的坐标


  1. 四个点都获取完成, 再用opencv绘制四边形
Imgproc.fillPoly(polyMat, pts, Scalar(0, 255, 0, 255), 1);
Core.addWeighted(img.mat, alpha, polyMat, beta, gamma, matAddWeighted);



测试环境

手机: Mi 11 Pro

Android版本: 12

Autojs版本: 9.1.10


名人名言思路是最重要的, 其他的百度, bing, stackoverflow, github, 安卓文档, autojs文档, 最后才是群里问问 --- 牙叔教程


声明

部分内容来自网络 本教程仅用于学习, 禁止用于其他用途

相关文章
|
数据可视化
绘制热图时看不出颜色差异?四种方式转换处理使结果显而“易”见
绘制热图时看不出颜色差异?四种方式转换处理使结果显而“易”见
19500 2
简单好用的图片取色器【可取RGB数值】
这篇文章介绍了如何使用Snipaste工具进行截图和取色,包括按下快捷键F1截图、选择图片区域、移动鼠标取色以及复制颜色值的步骤,并提供了操作界面的截图。
|
4月前
|
存储 人工智能 C++
【C++】有N种颜色的小球,开始同一种颜色小球装在同一个筐里面,颜色从1到N标号。有下面两个操作(Cab),把颜色是b的 (源码)【独一无二】
【C++】有N种颜色的小球,开始同一种颜色小球装在同一个筐里面,颜色从1到N标号。有下面两个操作(Cab),把颜色是b的 (源码)【独一无二】
【OpenGL】十二、OpenGL 绘制线段 ( 绘制单条线段 | 绘制多条线段 | 依次连接的点组成的线 | 绘制圈 | 绘制彩色的线 )(一)
【OpenGL】十二、OpenGL 绘制线段 ( 绘制单条线段 | 绘制多条线段 | 依次连接的点组成的线 | 绘制圈 | 绘制彩色的线 )(一)
285 0
【OpenGL】十二、OpenGL 绘制线段 ( 绘制单条线段 | 绘制多条线段 | 依次连接的点组成的线 | 绘制圈 | 绘制彩色的线 )(一)
LeetCode-2038 如果相邻两个颜色均相同则删除当前颜色
LeetCode-2038 如果相邻两个颜色均相同则删除当前颜色
|
iOS开发
iOS开发-调整文字之间间距
iOS开发-调整文字之间间距
299 0
|
计算机视觉
Qt实用技巧:图形视图框架中图元将矩形边界改为不规则边界(用于选取和碰撞)
Qt实用技巧:图形视图框架中图元将矩形边界改为不规则边界(用于选取和碰撞)
Qt实用技巧:图形视图框架中图元将矩形边界改为不规则边界(用于选取和碰撞)
【音频处理】Melodyne 网络缩放功能 ( 音符分离线 | 片段分离线 | 窗口滚动条 | 网格缩放 | 修改图像显示位置 | 显示五线谱 )
【音频处理】Melodyne 网络缩放功能 ( 音符分离线 | 片段分离线 | 窗口滚动条 | 网格缩放 | 修改图像显示位置 | 显示五线谱 )
404 0
【音频处理】Melodyne 网络缩放功能 ( 音符分离线 | 片段分离线 | 窗口滚动条 | 网格缩放 | 修改图像显示位置 | 显示五线谱 )
【OpenGL】十二、OpenGL 绘制线段 ( 绘制单条线段 | 绘制多条线段 | 依次连接的点组成的线 | 绘制圈 | 绘制彩色的线 )(二)
【OpenGL】十二、OpenGL 绘制线段 ( 绘制单条线段 | 绘制多条线段 | 依次连接的点组成的线 | 绘制圈 | 绘制彩色的线 )(二)
319 0
【OpenGL】十二、OpenGL 绘制线段 ( 绘制单条线段 | 绘制多条线段 | 依次连接的点组成的线 | 绘制圈 | 绘制彩色的线 )(二)
下一篇
DataWorks