牙叔教程 簡單易懂
效果展示
緣起
群裡有人問某音的霓虹特效怎麼做, 併發了圖片,
看著還有點意思, 就研究了一下
autojs版本
9。0。4
思路
你將學到以下知識點
初始化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文件, 最後才是群裡問問
——- 牙叔教程
宣告
部分內容來自網路
本教程僅用於學習, 禁止用於其他用途