Java OpenCV 图像处理13 Soble算子和Laplance算子
Java OpenCV-4.0.0 Soble算子和Laplance算子
package com.xu.opencv;
import org.opencv.core.Core;
import org.opencv.core.Mat;
import org.opencv.core.Size;
import org.opencv.highgui.HighGui;
import org.opencv.imgcodecs.Imgcodecs;
import org.opencv.imgproc.Imgproc;
/**
*
* @Title: Image.java
* @Description: OpenCV-4.0.0 测试文件
* @Package com.xu.test
* @author: xuhyacinth
* @date: 2019年5月7日12:13:13
* @version: V-1.0.0
* @Copyright: 2019 xuhyacinth
*
*/
public class Image {
static {
//在使用OpenCV前必须加载Core.NATIVE_LIBRARY_NAME类,否则会报错
System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
}
public static void main(String[] args) {
laplance();
}
/**
* OpenCV-4.0.0 Soble算子
* @return: void
* @date: 2019年5月7日12:16:55
*/
public static void soble() {
Mat src=Imgcodecs.imread("C:\\Users\\Administrator\\Pictures\\3.jpeg");
Mat dst = new Mat();
Mat gray= new Mat();
//振幅图像(X、Y混合图像)
//1 高斯平滑
Imgproc.GaussianBlur(src, dst, new Size(3,3), 7,7);
//2 转灰度图片
Imgproc.cvtColor(dst, gray, Imgproc.COLOR_BGR2GRAY);
//3 求X和Y的梯度
Mat xgray = new Mat();
Mat ygray = new Mat();
//3.1 Sobel
//Imgproc.Sobel(gray, xgray, Imgproc.CV_DIST_L2, 1, 0, 3);
//Imgproc.Sobel(gray, ygray, Imgproc.CV_DIST_L2, 0, 1, 3);
//3.2 Scharr
Imgproc.Scharr(gray, xgray, Imgproc.CV_DIST_FAIR, 1, 0);
Imgproc.Scharr(gray, ygray, Imgproc.CV_DIST_FAIR, 0, 1);
//4.图像变为正数
Core.convertScaleAbs(xgray, xgray);
Core.convertScaleAbs(ygray, ygray);
HighGui.imshow("Soble算子", xgray);
HighGui.waitKey(0);
}
/**
* OpenCV-4.0.0 Laplance算子
* @return: void
* @date: 2019年5月7日12:16:55
*/
public static void laplance () {
Mat src=Imgcodecs.imread("C:\\Users\\Administrator\\Pictures\\3.jpeg");
Mat gray= new Mat();
Mat dst= new Mat();
Mat image= new Mat();
//1 高斯平滑
Imgproc.GaussianBlur(src, dst, new Size(3,3), 7,7);
//2 转灰度图片
Imgproc.cvtColor(dst, gray, Imgproc.COLOR_BGR2GRAY);
//3 Laplance算子
Imgproc.Laplacian(gray, image, Imgproc.CV_CANNY_L2_GRADIENT,3);
//Imgproc.threshold(image, image, 0, 255, Imgproc.THRESH_OTSU);
HighGui.imshow("Laplance算子", image);
HighGui.waitKey(0);
}
}