2012-11-20 311 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