如何使用Java OpenCV库更改图像亮度?
org.opencv.core.Mat类的convertTo()方法对给定的矩阵执行必要的计算,以更改图像的对比度和亮度。此方法接受4个参数:
mat - 空矩阵,用于保存与源矩阵大小和类型相同的计算结果。
rtype - 指定输出矩阵类型的整数值。如果此值为负,则类型将与源类型相同。
alpha - 增益值,必须大于0(默认值为1)。
beta - 偏差值(默认值为0)。
使用OpenCV Java库更改图像亮度
如上所述,传递给此方法的beta值会更改图像的亮度。如果此参数的值为负值(0到-255),则图像亮度降低。类似地,如果它大于0(0到255),则图像亮度增加。
要更改图像的对比度,请通过传递空矩阵、-1(获取相同的类型)、1作为alpha值以及beta值来调用**convertTo()**方法,以增加或减少亮度。
示例
import org.opencv.core.Core; import org.opencv.core.Mat; import org.opencv.imgcodecs.Imgcodecs; public class AlteringBrightness { public static void main (String[] args) { //Loading the OpenCV core library System.loadLibrary( Core.NATIVE_LIBRARY_NAME ); //Reading the Image from the file String file ="D:\Images\tiger.jpg"; Mat src = Imgcodecs.imread(file, Imgcodecs.IMREAD_COLOR); //Creating an empty matrix Mat dest = new Mat(src.rows(), src.cols(), src.type()); //Increasing the brightness of an image src.convertTo(dest, -1, 1, 100); // Writing the image Imgcodecs.imwrite("D:\Images\altering_brightness_100.jpg", dest); } }
输入图像
以下是不同alpha值的各种输出图像:
α值:-100
α值:-50
α值:50
α值:100
广告