autojs某音霓虹特效

牙叔教程 簡單易懂

效果展示

autojs某音霓虹特效

緣起

群裡有人問某音的霓虹特效怎麼做, 併發了圖片,

看著還有點意思, 就研究了一下

autojs某音霓虹特效

autojs版本

9。0。4

思路

autojs某音霓虹特效

你將學到以下知識點

初始化opencv

opencv讀取圖片

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。CV_8UC3);

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文件, 最後才是群裡問問

——- 牙叔教程

宣告

部分內容來自網路

本教程僅用於學習, 禁止用於其他用途