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

จะเปลี่ยนช่องว่างสีของรูปภาพโดยใช้ไลบรารี Java OpenCV ได้อย่างไร


การใช้โปรโตคอลพื้นที่สี คุณสามารถแสดงสีในภาพได้ ใน OpenCV มีช่องว่างสีต่างๆ มากมาย −

  • BGR − RGB เป็นปริภูมิสีที่ใช้กันอย่างแพร่หลายที่สุดในเรื่องนี้ แต่ละพิกเซลถูกสร้างขึ้นจากค่าความเข้ม (ความเข้ม) สามสีที่แตกต่างกัน:สีแดง สีน้ำเงิน และสีเขียว ซึ่งเป็นปริภูมิสีเริ่มต้นใน OpenCV แต่จะถูกเก็บไว้เป็น BGR

  • HSV − ในพื้นที่สี HSV สีต่างๆ จะเกิดขึ้นจากการเปลี่ยนสี ความอิ่มตัว และความสว่าง

  • CMK − นี่คือพื้นที่สีแบบลบ โดยในที่นี้สีต่างๆ จะถูกสร้างขึ้นโดยการลบค่าสีฟ้า สีม่วงแดง และสีเหลือง โดยเริ่มจากสีขาว

  • ยูวี − Y’UV กำหนดปริภูมิสีในแง่ของหนึ่งลูมา (Y’) และสององค์ประกอบโครมิแนนซ์ (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 {
      //Loading the OpenCV core library
      System.loadLibrary( Core.NATIVE_LIBRARY_NAME );
      //Reading the image
      Mat src = Imgcodecs.imread("D:\\images\\elephant.jpg");
      //Creating the empty destination matrix
      Mat dst = new Mat();
      //Converting From BGR to Gray
      Imgproc.cvtColor(src, dst, Imgproc.COLOR_BGR2GRAY);
      HighGui.imshow("BGR to Gray", dst);
      dst = new Mat();
      //Converting From BGR to HSV
      Imgproc.cvtColor(src, dst, Imgproc.COLOR_BGR2HSV);
      HighGui.imshow("BGR to HSV", dst);
      dst = new Mat();
      //Converting From BGR to HSV
      Imgproc.cvtColor(src, dst, Imgproc.COLOR_RGB2YUV);
      HighGui.imshow("BGR to YUV", dst);
      HighGui.waitKey();
   }
}

ใส่รูปภาพ

จะเปลี่ยนช่องว่างสีของรูปภาพโดยใช้ไลบรารี Java OpenCV ได้อย่างไร

ผลลัพธ์

ในการดำเนินการ โปรแกรมดังกล่าวจะสร้างหน้าต่างต่อไปนี้ -

BGR เป็นสีเทา

จะเปลี่ยนช่องว่างสีของรูปภาพโดยใช้ไลบรารี Java OpenCV ได้อย่างไร

BGR เป็น HSV

จะเปลี่ยนช่องว่างสีของรูปภาพโดยใช้ไลบรารี Java OpenCV ได้อย่างไร

BGR ถึง YUV

จะเปลี่ยนช่องว่างสีของรูปภาพโดยใช้ไลบรารี Java OpenCV ได้อย่างไร