autojs某音霓虹特效
牙叔教程简单易懂
效果展示
缘起
群里有人问某音的霓虹特效怎么做,并发了图片,
看着还有点意思,就研究了一下
autojs版本
9.0.4
思路
你将学到以下知识点
初始化opencvopencv读取图片opencv读取灰度图片opencv高斯模糊opencv边缘检测opencv查找轮廓opencv绘制轮廓opencv修改轮廓坐标创建Mat实例Scalar颜色图片融合opencv资源释放mat写入文件
代码讲解
1.初始化opencv
runtime.images.initOpenCvIfNeeded();
2.导入类
importClass(org.opencv.core.CvType);
importClass(org.opencv.core.Scalar);
importClass(org.opencv.core.Point);
importClass(java.util.LinkedList);
importClass(org.opencv.imgproc.Imgproc);
importClass(org.opencv.imgcodecs.Imgcodecs);
importClass(org.opencv.core.Core);
importClass(org.opencv.core.Mat);
importClass(org.opencv.core.MatOfDMatch);
importClass(org.opencv.core.MatOfKeyPoint);
importClass(org.opencv.core.MatOfRect);
importClass(org.opencv.core.Size);
importClass(org.opencv.features2d.DescriptorMatcher);
importClass(org.opencv.features2d.Features2d);
importClass(android.graphics.Matrix);
importClass(org.opencv.android.Utils);
importClass(android.graphics.Bitmap);
3.可设置的参数
let thickness =2;//绘制轮廓的线的粗细
let kSize =30;//高斯内核的大小,必须为整数或者奇数
let numberOfLayerOverlays =3;//高斯模糊叠加的图层数量,用于制造发光效果
let color =”#ff0000″;
4.读取图片
let imgPath = files.path(“./牙叔正方形.png”);
var img = Imgcodecs.imread(imgPath);
5.读取灰度图
var imgGray = Imgcodecs.imread(imgPath,0);
6.降噪
let imgBlur = imgGray.clone();
Imgproc.GaussianBlur(imgGray, imgBlur, Size(3,3),0);
7.边缘检测
var imgCanny = imgBlur.clone();
Imgproc.Canny(imgBlur, imgCanny,120,200,3, false);
8.创建Mat实例
let rows = img.rows();
let cols = img.cols();
let imgContour = Mat(rows, cols, CvType.CV8UC3);
9.绘制轮廓
let red = colors.red(color);
let green = colors.green(color);
let blue = colors.blue(color);
let alpha = colors.alpha(color);
// cv::Scalar(v1, v2, v3, v4),前面的三个参数是依次设置BGR的,和RGB相反,第四个参数设置图片的透明度
Imgproc.drawContours(imgContour, contours,-1, Scalar(blue, green, red, alpha), thickness,8);
10.查看图片
function viewMat(mat){
let tempFilePath = files.join(files.getSdcardPath(),”脚本”,”mat.png”);
Imgcodecs.imwrite(tempFilePath, mat);
app.viewFile(tempFilePath);
}
名人名言
思路是最重要的,其他的百度, bing, stackoverflow,安卓文档, autojs文档,最后才是群里问问
—牙叔教程
声明
部分内容来自网络
本教程仅用于学习,禁止用于其他用途