如何使用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

更新于:2020年4月9日

760 次查看

启动您的职业生涯

通过完成课程获得认证

开始
广告