การใช้โปรโตคอลพื้นที่สี คุณสามารถแสดงสีในภาพได้ ใน 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();
}
} ใส่รูปภาพ

ผลลัพธ์
ในการดำเนินการ โปรแกรมดังกล่าวจะสร้างหน้าต่างต่อไปนี้ -
BGR เป็นสีเทา −

BGR เป็น HSV −

BGR ถึง YUV −
