// 初始化opencv
runtime.images.initOpenCvIfNeeded();
複製代碼
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.DescriptorExtractor);
importClass(org.opencv.features2d.DescriptorMatcher);
importClass(org.opencv.features2d.FeatureDetector);
importClass(org.opencv.features2d.Features2d);
importClass(android.graphics.Matrix);
importClass(org.opencv.android.Utils);
importClass(android.graphics.Bitmap);
複製代碼
// 讀取圖片
var img = Imgcodecs.imread(imgPath);
// 讀取灰度圖
var img = Imgcodecs.imread(imgPath, 0);
複製代碼
// opencv的mat轉bitmap
function mat2bitmap(img) {
let width = img.width();
let height = img.height();
let bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
Utils.matToBitmap(img, bitmap);
return bitmap;
}
複製代碼
// 縮放bitmap
function zoomBitmap(bitmap, scale) {
let matrix = new Matrix();
matrix.postScale(scale, scale); //長和寬放大縮小的比例
let resizeBmp = Bitmap.createBitmap(bitmap, 0, 0, bitmap.getWidth(), bitmap.getHeight(), matrix, true);
return resizeBmp;
}
複製代碼
// 圖片控件設置bitmap
ui.img.setImageBitmap(bitmap);
複製代碼
function 二值化圖片(imgPath) {
let dst = new Mat();
let maxValue = 255;
let adaptiveMethod = Imgproc.ADAPTIVE_THRESH_MEAN_C;
let thresholdType = Imgproc.THRESH_BINARY_INV;
let blockSize = 3;
let C = 4;
Imgproc.adaptiveThreshold(grayImg, dst, maxValue, adaptiveMethod, thresholdType, blockSize, C);
return dst;
}
複製代碼
function newSize(size) {
if (!Array.isArray(size)) {
size = [size, size];
}
if (size.length == 1) {
size = [size[0], size[0]];
}
return new org.opencv.core.Size(size[0], size[1]);
}
複製代碼
// 定義輪廓變量
let contours = new java.util.ArrayList();
// 輪廓長度
let len = contours.size();
// 找輪廓
Imgproc.findContours(img, contours, hierarchy, Imgproc.RETR_EXTERNAL, Imgproc.CHAIN_APPROX_SIMPLE, Point());
// 畫輪廓
Imgproc.drawContours(img, contours, i, Scalar(0, 0, 0), -1);
// 外接矩形
let rect = Imgproc.boundingRect(contour);
// 面積
let area = rect.area();
// 寬高
let width = rect.width;
let height = rect.height;
// 左上角
let left = rect.x;
let top = rect.y;
複製代碼
// 黑帽
Imgproc.morphologyEx(
img1,
img2,
Imgproc.MORPH_BLACKHAT,
Imgproc.getStructuringElement(Imgproc.MORPH_RECT, newSize(5))
);
複製代碼
部份內容來自網絡 本教程僅用於學習, 禁止用於其餘用途javascript