从emguCV中的图像中获取最大HSV值

时间:2017-08-14 18:33:11

标签: c# emgucv hsv

我正在尝试使用emguCV从C#中转换为hsv的图像中获取色调,饱和度和值的最大值。在openCV中我可以使用Vec3b,但我如何在c#中获得相同的效果?

1 个答案:

答案 0 :(得分:0)

我不确定是否有直接的等价物。如果您想要每个通道的最大值,您可以将HSV Mat分成3个通道,并执行一个GetRangeValue,它应该返回每个通道的最大值和最小值。

    Mat orig = new Mat(@"C:\Users\Public\Pictures\Sample Pictures\Koala.jpg", ImreadModes.Color);

    using (Mat hsv = new Mat())
    {
        CvInvoke.CvtColor(orig, hsv, ColorConversion.Bgr2Hsv);
        Mat[] channels = hsv.Split();

        RangeF H = channels[0].GetValueRange();
        RangeF S = channels[1].GetValueRange();
        RangeF V = channels[2].GetValueRange();

        Console.WriteLine(string.Format("Max H {0} Min H {1}", H.Max, H.Min));
        Console.WriteLine(string.Format("Max S {0} Min S {1}", S.Max, S.Min));
        Console.WriteLine(string.Format("Max V {0} Min V {1}", V.Max, V.Min));

        MCvScalar mean = CvInvoke.Mean(hsv);
        Console.WriteLine(string.Format("Mean V {0} Mean S {1} Mean V {2} ", mean.V0, mean.V1, mean.V2)); ;
    }

道格