如何使用Java OpenCV庫更改影像的顏色空間?


使用顏色空間協議,您可以表示影像中的顏色。OpenCV 中有幾種可用的顏色空間,其中一些是 -

  • BGR - RGB 是最廣泛使用的顏色空間,其中每個畫素實際上是由三種不同的顏色(強度)值形成的:紅色、藍色和綠色,它是 OpenCV 中的預設顏色空間,但它儲存為 BGR。

  • HSV - 在 HSV 顏色空間中,不同的顏色是透過改變色調、飽和度和亮度形成的。

  • CMK - 這是一種減色顏色空間,在這種顏色空間中,不同的顏色是透過從白色開始減去青色、品紅色和黃色值形成的。

  • Y’UV - Y’UV 根據一個亮度(Y’)和兩個色度(UV)分量定義顏色空間。Y’UV 顏色模型用於以下複合彩色影片標準。

您可以使用org.opencv.imgproc.Imgproc類的cvtColor()方法將影像的表示形式從一個顏色空間轉換為另一個顏色空間。此方法接受源影像、目標影像以及表示目標影像顏色的程式碼。

要將顏色空間從 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 -

更新於: 2020年4月10日

629 次瀏覽

啟動您的 職業生涯

透過完成課程獲得認證

開始
廣告

© . All rights reserved.