2012-11-20 309 views

回答

3

好吧,我已经发现了利用给定的.NET架构

一些帮助一个Bgr pixel的方式;

1-转换的颜色System.Drawing.Color

System.Drawing.Color intermediate = System.Drawing.Color.FromArgb((int)pixel.Red, (int)pixel.Green, (int)pixel.Blue); 

2-从中间构建胸苷。

Hsv hsvPixel = new Hsv(intermediate.GetHue(), intermediate.GetSaturation(), intermediate.GetBrightness()); 

干杯。

+1

系统。 Drawing.Color为您提供HSB - 不是HSV。这些数字对我来说很小,比如0.3和0.4的饱和度和亮度,当我期待136和152时。 – mrwaim

0

如果您想在EmguCV中执行此操作,只需将图像读入图像中,即可获取像素的值并将其粘贴到Hsv结构中。

例如:

static void Main(string[] args) 
{ 
    bool haveOpenCL = CvInvoke.HaveOpenCL; 

    bool haveOpenClGpu = CvInvoke.HaveOpenCLCompatibleGpuDevice; 

    CvInvoke.UseOpenCL = true; 

    Emgu.CV.Image<Bgr, Byte> lenaBgr = new Image<Bgr, Byte>(@"D:\OpenCV\opencv-3.2.0\samples\data\Lena.jpg"); 

    CvInvoke.Imshow("Lena BSG", lenaBgr); 

    Bgr color = lenaBgr[100, 100]; 

    Console.WriteLine("Bgr: {0}", color.ToString()); 

    Emgu.CV.Image<Hsv, Byte> lenaHsv = new Image<Hsv, Byte>(@"D:\OpenCV\opencv-3.2.0\samples\data\Lena.jpg"); 

    CvInvoke.Imshow("Lena HSV", lenaHsv); 

    Hsv colorHsv = lenaHsv[100, 100]; 

    Console.WriteLine("HSV: {0}", colorHsv.ToString()); 

    CvInvoke.WaitKey(0); 
} 

}

其结果是: BGR:[87,74,182] HSV:[176151182]

Lena BGR     Lena HSV 

LenaBGRLenaHSV