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