如何使用 Java OpenCV 库改变图像的对比度?
增加/减少图像的亮度和对比度是通过变换图像像素来实现的操作。这可以以方程的形式表示为 −
g(i, j) = α . f(i, j)+ β
其中,
(i, j) 是像素的位置。
α (增益) 和 β (偏差)是变换的参数。
有时增益参数控制图像的对比度,而偏差参数控制图像的亮度。
org.opencv.core.Mat 类的 convertTo() 方法对给定矩阵执行所需的计算,以改变图像的对比度和亮度。此方法接受 4 个参数 −
mat − 空矩阵,用于保存与源矩阵大小和类型相同的结果。
rtype − 整数值,指定输出矩阵的类型。如果此值为负数,则类型将与源相同。
alpha −增益值,必须大于 0(默认值为 1)。
beta − 偏差值(默认值为 0)。
使用 OpenCV Java 库更改图像的对比度
如上所述,传递给此方法的 alpha 值会改变图像的对比度,如果此参数的选定值小于 1(为 0),则图像的对比度会降低。类似地,如果它大于 1(至 255),则图像的对比度会增加。
要改变图像的对比度 −
使用 loadLibrary() 方法加载 OpenCV 本机库。
使用 imread() 方法将所需图像的内容读取到 Mat 对象中。
创建一个空矩阵,其大小和类型与上一步获得的矩阵相同。
通过传递空矩阵、-1(以获得相同类型)、alpha 值(以增加或减少对比度)(0-1 或 1-100)和 0 作为 beta 值来调用 convertTo() 方法。
使用 Imgcodecs.imwrite() 方法将结果矩阵的内容写入输出图像。
示例
import org.opencv.core.Core;
import org.opencv.core.Mat;
import org.opencv.imgcodecs.Imgcodecs;
public class AlteringContrast {
public static void main (String[] args) {
//加载 OpenCV 核心库
System.loadLibrary( Core.NATIVE_LIBRARY_NAME );
//从文件读取图像
String file ="D:\Images\car3.jpg";
Mat src = Imgcodecs.imread(file, Imgcodecs.IMREAD_COLOR);
//创建一个空矩阵
Mat dest = new Mat(src.rows(), src.cols(), src.type());
//增加图像的对比度
src.convertTo(dest, -1, 10, 0);
// 写入图像
Imgcodecs.imwrite("D:\Images\altering_contrast_10.jpg", dest);
}
}
输入图片

以下是不同 alpha 值的各种输出图片 −
α-value: 0.5
α-value: 0.8

α-value: 1.5
α-value: 2.0

相关文章
有用资源
java 参考教程 - 该教程包含有关 java 的更多信息:https://www.cainiaomax.com/java/

