Java OpenCVでHSV画像をRGBカラー画像に変換する方法【cvtColor活用ガイド】
画像処理を行う際、色空間の変換は非常に重要な操作の一つです。OpenCVのImgprocクラスが提供するcvtColor()メソッドを使えば、画像の色空間を簡単に別の形式へ変換できます。この記事では、HSV形式の画像をRGBカラー画像に変換する具体的な手順を解説します。
cvtColor()メソッドとは
cvtColor()メソッドは、画像の色空間をある形式から別の形式へ変換するためのメソッドです。このメソッドは以下の3つのパラメータを受け取ります。
- src ー 変換元の画像(ソース)を表すMatオブジェクト。
- dst ー 変換結果を格納する出力先(デスティネーション)を表すMatオブジェクト。
- code ー 出力画像の色空間を指定する整数値(カラーコード)。
HSV画像をRGBカラー画像へ変換する場合は、第3パラメータとしてImgproc.COLOR_HSV2RGBを指定します。これにより、OpenCVが自動的にHSVからRGBへの変換処理を実行してくれます。
実装例:HSVからRGBへの変換コード
以下は、JavaでOpenCVを使用してHSV画像をRGB画像に変換し、結果をファイルに保存するサンプルコードです。
import org.opencv.core.Core;
import org.opencv.core.Mat;
import org.opencv.imgcodecs.Imgcodecs;
import org.opencv.imgproc.Imgproc;
public class HSV2RGB {
public static void main(String args[]) throws Exception {
// OpenCVのコアライブラリを読み込む
System.loadLibrary( Core.NATIVE_LIBRARY_NAME );
// HSV画像を読み込む
Mat src = Imgcodecs.imread("D:\\images\\hsvimage.jpg");
// 出力用の空のMatオブジェクトを作成
Mat dst = new Mat();
// HSVからRGBへ色空間を変換
Imgproc.cvtColor(src, dst, Imgproc.COLOR_HSV2RGB);
// Imgcodecsクラスをインスタンス化
Imgcodecs imageCodecs = new Imgcodecs();
// 変換後の画像を保存
imageCodecs.imwrite("D:\\images\\hsv2rgb.jpg", dst);
System.out.println("Image Saved");
}
}処理の流れを解説
- ライブラリの読み込み:
System.loadLibrary()でOpenCVのネイティブライブラリをロードします。これは必須の初期化処理です。 - 画像の読み込み:
Imgcodecs.imread()メソッドで、変換元となるHSV画像をファイルから読み込みます。 - 出力マトリックスの準備: 変換結果を格納するための空の
Matオブジェクトを作成します。 - 色空間の変換:
Imgproc.cvtColor()にCOLOR_HSV2RGBフラグを渡して呼び出すことで、HSVからRGBへの変換が行われます。 - 結果の保存:
imwrite()メソッドで変換後の画像を指定したパスに書き出します。
入力画像と出力画像
入力(HSV画像)

出力(RGBカラー画像)

まとめ
OpenCVのcvtColor()メソッドを使えば、わずか数行のコードでHSV画像をRGBカラー画像に変換できます。ポイントは第3引数に適切なカラーコード(ここではImgproc.COLOR_HSV2RGB)を指定することです。同様の手法で、BGR⇔GRAY、BGR⇔HSVなど、他の色空間間の変換も可能なので、さまざまな画像処理タスクに応用できます。
-
JavaのOpenCVライブラリでカラー画像をグレースケールに変換する方法
カラー画像をグレースケールに変換する基本OpenCVのImgprocクラスが提供するcvtColor()メソッドを使うと、画像の色空間を別の色空間へ変換できます。このメソッドは以下の3つのパラメータを受け取ります。src – 変換元の画像を表すMatオブジェクト(ソース)dst – 変換結果を格納するMatオブジェクト(出力先)code – 変換後の色空間を指定する整数値(カラーコード)カラー画像をグレースケールに変換する場合は、第3パラメータにImgproc.COLOR_RGB2GRAYを指定します。このコードはRGB形式の画像をグレースケール(白黒の濃淡表現)へ変換することを意味しています
-
JavaとOpenCVライブラリを使って画像を保存(書き出し)する方法
OpenCVライブラリを利用すると、画像フィルタリング、幾何学的変換、色空間の変換、ヒストグラム処理など、さまざまな画像処理操作を行うことができます。本記事では、その中でも基本的な操作である「画像の読み込みと保存(書き出し)」の方法を解説します。画像を書き出す(保存する)方法Imgcodecsクラスのimread()メソッドを使って画像を読み込むと、その内容はMat(Matrix)オブジェクトに格納されます。読み込んだ画像をファイルとして保存するには、imwrite()メソッドを使用します。imwrite()メソッドは、以下の2つの引数を受け取ります。file:保存先のファイルパスを表す文字列