// 连接opencv
System.setProperty("java.awt.headless", "false");
System.out.println(System.getProperty("java.library.path"));
URL url = ClassLoader.getSystemResource("lib/opencv/opencv_java4100.dll");
System.load(url.getPath());
Mat img = Imgcodecs.imread("src/main/resources/img/1.jpg"); // 双引号中的地址就是你要做处理的图像地址
Mat gray = new Mat();
Imgproc.cvtColor(img, gray, Imgproc.COLOR_RGB2GRAY); // 也可以直接对原图 img做灰度,这样最后可以少 release一个 Mat,看实际使用
Mat binary = new Mat();
Photo.fastNlMeansDenoising(gray, gray); // 去噪声
Imgproc.adaptiveThreshold(gray, // 输入灰度图像
binary, // 输出的二值化图像
255, // 阙值超过的像素值
Imgproc.ADAPTIVE_THRESH_GAUSSIAN_C, // 自适应阙值算法类型,还有 ADAPTIVE_THRESH_MEAN_C
Imgproc.THRESH_BINARY, // 阙值类型,还有 THRESH_BINARY_INV
11, // 领域大小,必须是奇数且大于 1
2); // 从平均值或加权平均值中减去的常数,即 mean(x)-C
// 窗口显示
HighGui.namedWindow("binary", HighGui.WINDOW_NORMAL);
HighGui.resizeWindow("binary",1600,900);
HighGui.imshow("binary", binary);
HighGui.waitKey(0);
// 保存结果图片
Imgcodecs.imwrite("src/main/resources/img/result.png", binary);
//释放 Mat
img.release();
gray.release();
binary.release();
// 关闭窗口退出
HighGui.destroyAllWindows();标签:binary,HighGui,java,Mat,img,gray,Imgproc,opencv,二值化 From: https://www.cnblogs.com/Lee597/p/18362573
System.exit(0);