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

วิธีเปลี่ยนพื้นที่สีของภาพโดยใช้ไลบรารี Java OpenCV


ภาพรวม

โดยใช้โปรโตคอลพื้นที่สี (color space) คุณสามารถแสดงสีในภาพได้ มีพื้นที่สีหลายแบบที่พร้อมใช้งานใน OpenCV เช่น:

  • BGR - RGB เป็นพื้นที่สีที่ใช้กันอย่างแพร่หลาย โดยแต่ละพิกเซลประกอบด้วยค่าความเข้มของสีสามสี: แดง น้ำเงิน และเขียว เป็นพื้นที่สีเริ่มต้นใน OpenCV แต่เก็บในรูปแบบ BGR

  • HSV - ในพื้นที่สี HSV สีต่างๆ ถูกสร้างขึ้นโดยการเปลี่ยนแปลง Hue (สี) Saturation (ความอิ่ม) และ Brightness (ความสว่าง)

  • CMYK - นี่คือพื้นที่สีแบบลบ (subtractive) สีต่างๆ ถูกสร้างโดยการลบค่า Cyan, Magenta และ Yellow เริ่มจากสีขาว

  • Y'UV - Y'UV กำหนดพื้นที่สีในรูปของ Luma (Y') หนึ่งตัวและ Chrominance (UV) สองตัว โมเดลสี Y'UV ถูกใช้ในมาตรฐานวิดีโอสีผสมต่างๆ

คุณสามารถแปลงการแสดงภาพจากพื้นที่สีหนึ่งไปยังอีกพื้นที่หนึ่งได้โดยใช้เมธอด cvtColor() ของคลาส org.opencv.imgproc.Imgproc เมธอดนี้รับภาพต้นทาง ภาพปลายทาง และรหัสที่แทนสีของภาพปลายทาง

เพื่อเปลี่ยนพื้นที่สีจาก BGR เป็น HSV คุณต้องส่ง COLOR_BGR2HSV เป็นค่ารหัสสี เช่นเดียวกัน เพื่อเปลี่ยนจาก BGR เป็น YUV ต้องส่ง COLOR_BGR2YUV

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

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 ChangingColorSpaces {
    public static void main(String args[]) throws Exception {
        // โหลดไลบรารีหลักของ OpenCV
        System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
        
        // อ่านภาพ
        Mat src = Imgcodecs.imread("D:\\images\\elephant.jpg");
        
        // สร้างเมทริกซ์ปลายทางว่าง
        Mat dst = new Mat();
        
        // แปลงจาก BGR เป็น Gray
        Imgproc.cvtColor(src, dst, Imgproc.COLOR_BGR2GRAY);
        HighGui.imshow("BGR to Gray", dst);
        
        dst = new Mat();
        // แปลงจาก BGR เป็น HSV
        Imgproc.cvtColor(src, dst, Imgproc.COLOR_BGR2HSV);
        HighGui.imshow("BGR to HSV", dst);
        
        dst = new Mat();
        // แปลงจาก BGR เป็น YUV
        Imgproc.cvtColor(src, dst, Imgproc.COLOR_RGB2YUV);
        HighGui.imshow("BGR to YUV", dst);
        
        HighGui.waitKey();
    }
}

ภาพเข้า

วิธีเปลี่ยนพื้นที่สีของภาพโดยใช้ไลบรารี Java OpenCV

ผลลัพธ์

เมื่อรันโปรแกรม จะแสดงหน้าต่างดังต่อไปนี้:

BGR to Gray

วิธีเปลี่ยนพื้นที่สีของภาพโดยใช้ไลบรารี Java OpenCV

BGR to HSV

วิธีเปลี่ยนพื้นที่สีของภาพโดยใช้ไลบรารี Java OpenCV

BGR to YUV

วิธีเปลี่ยนพื้นที่สีของภาพโดยใช้ไลบรารี Java OpenCV