工作需要用到java做图像处理,导入opencv参考这篇文章:https://medium.com/@aadimator/how-to-set-up-opencv-in-intellij-idea-6eb103c1d45c
然后在java里面写的时候,必须要在类里面加上
static {
// 动态链接opencv
System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
}
不然会报错
文档
搜 opencv javadoc就能找到
mat操作
读入图片,注意路径一定要用src开头,不然会找不到文件
Mat mat1 = Imgcodecs.imread("src/../res/IMG_4013.JPG");
如果一开始就像转成灰度图
Mat mat1 = Imgcodecs.imread("src/../res/IMG_4012.JPG", Imgcodecs.IMREAD_GRAYSCALE);
转成灰度图的代码
Imgproc.cvtColor(mat1, mat1, Imgproc.COLOR_BGR2GRAY);
mat转换格式
Mat mat1_ = mat1.clone();
mat1_.convertTo(mat1_, CvType.CV_32FC1);
新建矩阵,指定大小
Mat mat_mean1 = new Mat(h1, w1, CvType.CV_32FC1);
double[] ary_mean1 = new double[len1];
for (int i = 0; i < len1; i++)
ary_mean1[i] = mean1;
mat_mean1.put(0, 0, ary_mean1);
矩阵平方
Core.pow(mat1_, 2, mat1_);
图像处理
中值滤波
Imgproc.medianBlur(mat1, mat1, 3);
取得图像的均值,第二个参数没有用到
MatOfDouble mu = new MatOfDouble();
Core.meanStdDev(mat1, mu, new MatOfDouble());
// 获得均值
double mean1 = mu.get(0, 0)[0];