Java
 Computer >> コンピューター >  >> プログラミング >> Java

Java OpenCVライブラリでカラー画像をHLSに変換する方法

OpenCVのImgprocクラスが提供するcvtColor()メソッドを使うと、画像の色空間を別の色空間へ簡単に変換できます。このメソッドは、以下の3つの引数を受け取ります。

  • src − 変換元の画像(ソース)を表すMatオブジェクト
  • dst − 変換結果を格納する出力先のMatオブジェクト
  • code − 変換後の色空間を指定する整数値(カラーコード)

カラー画像(RGB)をHLS形式の画像に変換したい場合は、このメソッドの第3引数にImgproc.COLOR_RGB2HLSを指定します。HLSは「色相(Hue)」「輝度(Lightness)」「彩度(Saturation)」で色を表現する色空間で、特定の色の検出や画像解析に広く利用されています。

サンプルコード

import org.opencv.core.Core;
import org.opencv.core.Mat;
import org.opencv.imgcodecs.Imgcodecs;
import org.opencv.imgproc.Imgproc;

public class RGB2HSL {
   public static void main(String args[]) throws Exception {
      // OpenCVのコアライブラリを読み込む
      System.loadLibrary( Core.NATIVE_LIBRARY_NAME );
      // 画像を読み込む
      Mat src = Imgcodecs.imread("D:\\images\\car.jpg");
      // 出力用の空のMatオブジェクトを作成
      Mat dst = new Mat();
      // 画像をHLS色空間に変換
      Imgproc.cvtColor(src, dst, Imgproc.COLOR_RGB2HLS);
      // Imgcodecsクラスのインスタンスを生成
      Imgcodecs imageCodecs = new Imgcodecs();
      // 変換した画像を保存
      imageCodecs.imwrite("D:\\images\\hslImage.jpg", dst);
      System.out.println("Image Saved");
   }
}

入力画像

Java OpenCVライブラリでカラー画像をHLSに変換する方法

出力画像

Java OpenCVライブラリでカラー画像をHLSに変換する方法

処理の流れのポイント

  1. ライブラリの読み込み: System.loadLibrary()でOpenCVのネイティブライブラリをロードします。
  2. 画像の読み込み: Imgcodecs.imread()で対象画像をMatオブジェクトとして取得します。
  3. 色空間の変換: cvtColor()にCOLOR_RGB2HLSを指定してHLS形式へ変換します。
  4. 結果の保存: imwrite()で変換後の画像をファイルに出力します。

なお、HLSから元のRGB画像に戻したい場合は、Imgproc.COLOR_HLS2RGBを指定することで逆変換が可能です。

  1. JavaのOpenCVライブラリでカラー画像をグレースケールに変換する方法

    カラー画像をグレースケールに変換する基本OpenCVのImgprocクラスが提供するcvtColor()メソッドを使うと、画像の色空間を別の色空間へ変換できます。このメソッドは以下の3つのパラメータを受け取ります。src – 変換元の画像を表すMatオブジェクト(ソース)dst – 変換結果を格納するMatオブジェクト(出力先)code – 変換後の色空間を指定する整数値(カラーコード)カラー画像をグレースケールに変換する場合は、第3パラメータにImgproc.COLOR_RGB2GRAYを指定します。このコードはRGB形式の画像をグレースケール(白黒の濃淡表現)へ変換することを意味しています

  2. JavaとOpenCVライブラリを使って画像を保存(書き出し)する方法

    OpenCVライブラリを利用すると、画像フィルタリング、幾何学的変換、色空間の変換、ヒストグラム処理など、さまざまな画像処理操作を行うことができます。本記事では、その中でも基本的な操作である「画像の読み込みと保存(書き出し)」の方法を解説します。画像を書き出す(保存する)方法Imgcodecsクラスのimread()メソッドを使って画像を読み込むと、その内容はMat(Matrix)オブジェクトに格納されます。読み込んだ画像をファイルとして保存するには、imwrite()メソッドを使用します。imwrite()メソッドは、以下の2つの引数を受け取ります。file:保存先のファイルパスを表す文字列