2017-08-14 213 views

回答

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)); ; 
    } 

道格

+0

因为我已经学会了,你可以用一个标量数组。 – AeroClassics