在本文中, 我们将学习如何使用OpenCV库增强图像的对比度。为了增强对比度, 使用直方图均衡技术。
有关直方图均衡技术的更多信息, 请参阅这里。
【Java中的图像处理S12(对比度增强)】首先, 我们需要为Java设置OpenCV, 我们建议使用eclipse相同, 因为它易于使用和设置。有关安装, 请参阅http://docs.opencv.org/2.4/doc/tutorials/introduction/java_eclipse/java_eclipse.html
现在让我们了解对比度增强所需的一些方法。
- equalizeHist(source, destination)–此方法位于OpenCv的Imgproc程序包中。资源参数是8位单通道源图像, 并且目的地参数是目标图像
- Imcodecs.imread()/ Imcodecs.imwrite()–这些方法用于将图像读取和写入为由OpenCV渲染的Mat对象。
//Java program to demonstrate contrast enhancement
package ocv;
import org.opencv.core.Core;
import org.opencv.core.Mat;
import org.opencv.imgcodecs.Imgcodecs;
import org.opencv.imgproc.Imgproc;
public class Main
{
public static void main( String[] args )
{
try
{
//For proper execution of native libraries
//Core.NATIVE_LIBRARY_NAME must be loaded before
//calling any of the opencv methods
System.loadLibrary( Core.NATIVE_LIBRARY_NAME );
//input image
Mat source = Imgcodecs.imread( "E:\\input.jpg" , Imgcodecs.CV_LOAD_IMAGE_GRAYSCALE);
Mat destination = new Mat(source.rows(), source.cols(), source.type());
//applying histogram equalization
Imgproc.equalizeHist(source, destination);
//writing output image
Imgcodecs.imwrite( "E:\\output.jpg" , destination);
}
catch (Exception e)
{
System.out.println( "error: " + e.getMessage());
}
}
}
注意:
该代码无法在在线IDE中使用, 因为它需要硬盘中的图像。
Input.jpg
Output.jpg
如果发现任何不正确的地方, 或者想分享有关上述主题的更多信息, 请写评论。
推荐阅读
- Java中的图像处理S14(两个图像的比较)
- Java中的图像处理S11(图像的更改方向)
- Java中的图像处理S10(为图像加水印)
- Java中的图像处理S9(人脸检测)
- Java中的图像处理S8(创建镜像)
- Java中的图像处理S7(创建随机像素图像)
- Java中的图像处理S5(彩色图像转为红色,绿色,蓝色图像)
- 每日LeetCode力扣(21~25)
- 每日LeetCode力扣(36~40)