Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Java

วิธีปรับความสว่างของภาพเกรสเกล


เมธอด equalizeHist() ของคลาส Imgproc รับภาพเกรสเกลและทำให้ฮิสโตแกรมของมันเท่าเทียมกัน (equalize) ซึ่งจะทำให้ความสว่างปกติ (normalize) และเพิ่มความคอนทราสต์ของภาพที่ให้มา เมธอดนี้รับ 2 พารามิเตอร์:

  • ออบเจ็กต์ Mat แทนภาพต้นทาง (เกรสเกล)

  • ออบเจ็กต์ Mat สำหรับเก็บผลลัพธ์

ตัวอย่างโค้ด

โปรแกรม Java ต่อไปนี้อ่านภาพสีเป็นเกรสเกล บันทึกไว้ ปรับความสว่างให้ปกติและเพิ่มคอนทราสต์ของภาพที่ให้มา และบันทึกไว้

import org.opencv.core.Core;
import org.opencv.core.Mat;
import org.opencv.highgui.HighGui;
import org.opencv.imgcodecs.Imgcodecs;
import org.opencv.imgproc.Imgproc;

public class HstExample {
    public static void main(String args[]) {
        // โหลดไลบรารีหลักของ OpenCV
        System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
        
        String input = "D://images//sunset.jpg";
        
        // อ่านภาพจากไฟล์
        Mat source = Imgcodecs.imread(input, Imgcodecs.IMREAD_GRAYSCALE);
        
        // สร้างเมทริกซ์ว่างเพื่อเก็บผลลัพธ์
        Mat dst = new Mat(source.rows(), source.cols(), source.type());
        Imgcodecs.imwrite("D://images//Grey_scale.jpg", source);
        
        // เพิ่มคอนทราสต์
        Imgproc.equalizeHist(source, dst);
        
        // บันทึกภาพ
        Imgcodecs.imwrite("D://images//increasing_contrast.jpg", dst);
        HighGui.imshow("output image", dst);
    }
}

ภาพเกรสเกล

วิธีปรับความสว่างของภาพเกรสเกล

ภาพผลลัพธ์

วิธีปรับความสว่างของภาพเกรสเกล