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

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

OpenCVのcvtColor()メソッドを使うと、RGBカラー画像をHLS(色相・輝度・彩度)形式に簡単に変換できます。変換には、第3引数としてImgproc.COLOR_RGB2HLSを指定します。

HLSカラースペースとは

HLSは「Hue(色相)」「Lightness(輝度)」「Saturation(彩度)」の頭文字を取った色表現モデルです。人間の色の知覚に近い形で色を扱えるため、特定の色範囲の抽出や画像解析などの前処理として広く利用されています。

サンプルコード

以下のコードでは、画像を読み込み、cvtColor()メソッドでRGBからHLSへ変換し、その結果をファイルに保存しています。

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

public class HSL2RGB {
   public static void main(String args[]) throws Exception {
      // OpenCVネイティブライブラリの読み込み
      System.loadLibrary(Core.NATIVE_LIBRARY_NAME);

      // 元画像を読み込む
      Mat src = Imgcodecs.imread("D:\\images\\car3.jpg");

      // 変換結果を格納するMatを作成
      Mat dst = new Mat();

      // RGBからHLSへ変換
      Imgproc.cvtColor(src, dst, Imgproc.COLOR_RGB2HLS);

      // 変換した画像を保存
      Imgcodecs.imwrite("D:\\images\\hslImage.jpg", dst);

      System.out.println("Image Saved");
   }
}

コードの解説

  • System.loadLibrary():OpenCVのネイティブライブラリを読み込みます。他の処理より前に必ず呼び出す必要があります。
  • Imgcodecs.imread():指定したパスから画像ファイルを読み込み、Matオブジェクトとして返します。
  • Imgproc.cvtColor():第1引数に入力画像、第2引数に出力先のMat、第3引数に変換タイプ(ここではCOLOR_RGB2HLS)を指定します。
  • Imgcodecs.imwrite():変換後の画像を指定したパスに保存します。

入力画像

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

出力画像

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

プログラムを実行すると、元のカラー画像がHLS形式に変換され、指定したパスに保存されます。HLS形式の画像は、色相ベースのマスキングや明度・彩度の調整など、さまざまな画像処理タスクの出発点として活用できます。

  1. JavaでOpenCVライブラリを使用してカラー画像をグレースケール画像として読み込む方法

    OpenCVのImgcodecsクラスが提供するimread()メソッドは、ファイル名を表す文字列を引数として受け取り、指定されたファイルの内容をMatオブジェクト(行列)として読み込み、それを返します。このメソッドを利用することで、画像ファイルの内容を簡単に読み取ることができます。 さらに、Imgcodecsクラスには、読み込みモードを指定する整数値(フラグ)を第2引数として渡せる別のバージョンも用意されています。このフラグを活用すれば、カラー画像をグレースケール画像として読み込むなど、目的に応じた柔軟な読み込みが可能です。 imread()メソッドで使用できる主なフラグ IMREAD_C

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

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