JavaのOpenCVライブラリを使ってRGB画像をHSV色空間に変換する方法
画像処理において、RGBからHSVへの色空間変換は非常に頻繁に利用される処理の一つです。JavaでOpenCVを使用すれば、わずか数行のコードで簡単に実現できます。
cvtColor()メソッドとは
Imgproc クラスが提供する cvtColor() メソッドを使うと、画像の色空間を別の形式へ変換できます。このメソッドは以下の3つのパラメータを受け取ります。
src − 変換元の画像(ソース)を表す Mat オブジェクト
dst − 変換結果を格納する Mat オブジェクト
code − 変換後の色空間を指定する整数値
RGB画像をHSVに変換したい場合は、第3引数として Imgproc.COLOR_RGB2HSV を指定します。これにより、赤・緑・青の3チャンネルで表現されていた画像が、色相(Hue)・彩度(Saturation)・明度(Value)によるHSV形式へと変換されます。
サンプルコード
import org.opencv.core.Core;
import org.opencv.core.Mat;
import org.opencv.imgcodecs.Imgcodecs;
import org.opencv.imgproc.Imgproc;
public class RGB2HSV {
public static void main(String args[]) throws Exception {
// OpenCVネイティブライブラリのロード
System.loadLibrary( Core.NATIVE_LIBRARY_NAME );
// 画像を読み込む
Mat src = Imgcodecs.imread("D:\\images\\ladakh.jpg");
// 空の出力用Matオブジェクトを作成
Mat dst = new Mat();
// RGBからHSVへ変換
Imgproc.cvtColor(src, dst, Imgproc.COLOR_RGB2HSV);
// Imgcodecsクラスのインスタンスを生成
Imgcodecs imageCodecs = new Imgcodecs();
// 変換結果の画像を保存
imageCodecs.imwrite("D:\\images\\colorTOhsv.jpg", dst);
System.out.println("Image Saved");
}
}コードの解説
System.loadLibrary(): OpenCVのネイティブライブラリをロードします。必ず最初に呼び出す必要があります。
Imgcodecs.imread(): 指定したパスから画像ファイルを読み込み、Matオブジェクトとして返します。
Imgproc.cvtColor(): 読み込んだRGB画像をHSV色空間へ変換します。
imageCodecs.imwrite(): 変換後の画像を指定したパスに書き出します。
入力画像

出力画像

まとめ
OpenCVの cvtColor() メソッドと COLOR_RGB2HSV フラグを組み合わせることで、JavaでもRGB画像からHSV画像への変換を簡単に行えます。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:保存先のファイルパスを表す文字列