SourceChord

C#とXAML好きなプログラマの備忘録。最近はWPF系の話題が中心です。

画像をHSV色空間に変換して表示

引き続き、OpenCvSharpネタです。

CvtColor関数で、通常のRGB色空間の画像データから、HSV色空間のデータに変換できます。

このサンプルでは、読み込んだ画像をHSV色空間に変換した後、H, S, Vの各チャンネルを分割し、それぞれの成分ごとのモノクロ画像を生成して表示しています。

        static void Main(string[] args)
        {
            using (var src = new Mat(@"Images/1.jpg"))
            using (var hsv = new Mat())
            {
                //Cv2.CvtColor(src, hsv, ColorConversionCodes.BGR2HSV);     // こうすると、H(彩度)は0~180の範囲の値になる
                Cv2.CvtColor(src, hsv, ColorConversionCodes.BGR2HSV_FULL);  // こちらは、H(彩度)は0~255の範囲の値になる

                // HSV色空間の画像を、各チャンネルごとに分割
                var channels = Cv2.Split(hsv);

                // それぞれの画像をウィンドウ表示
                using (var srcWin = new Window("original image", src))
                using (var hsvWin = new Window("hsv image", hsv))
                using (var hueWin = new Window("hue image", channels[0]))
                using (var satWin = new Window("saturation image", channels[1]))
                using (var valWin = new Window("value image", channels[2]))
                {
                    Cv2.WaitKey();
                }
            }
        }

f:id:minami_SC:20160823001102p:plain