如何使用 Java OpenCV 库改变图像的亮度?
javaobject oriented programmingprogramming
org.opencv.core.Mat 类的 convertTo() 方法对给定矩阵执行所需的计算,以改变图像的对比度和亮度。此方法接受 4 个参数 −
mat − 空矩阵,用于保存与源矩阵大小和类型相同的结果。
rtype − 整数值,指定输出矩阵的类型。如果此值为负数,则类型将与源相同。
alpha − 增益值,必须大于 0(默认值为 1)。
beta −偏差值(默认值为 0)。
使用 OpenCV Java 库更改图像的亮度
如上所述,传递给此方法的 beta 值会更改图像的亮度,如果此参数的选定值为负值(0 到 -255),则图像的亮度会降低。同样,如果它大于 0(0 到 255),则图像的亮度会增加。
要更改图像的对比度,请调用 convertTo() 方法,传递空矩阵、-1(以获得相同类型)、1 作为 alpha 值和 beta 值以增加或减少亮度。
示例
import org.opencv.core.Core; import org.opencv.core.Mat; import org.opencv.imgcodecs.Imgcodecs; public class AlteringBrightness { public static void main (String[] args) { //加载OpenCV核心库 System.loadLibrary( Core.NATIVE_LIBRARY_NAME ); //从文件读取图像 String file ="D:\Images\tiger.jpg"; Mat src = Imgcodecs.imread(file, Imgcodecs.IMREAD_COLOR); //创建一个空矩阵 Mat dest = new Mat(src.rows(), src.cols(), src.type()); //增加图像亮度 src.convertTo(dest, -1, 1, 100); // 写入图像 Imgcodecs.imwrite("D:\Images\altering_brightness_100.jpg", dest); } }
输入图像
以下是不同 alpha 值的各种输出图像 −
α-value: -100
α-value: -50
α-value: 50
α-value: 100