2011-05-26 142 views
3

在下文中,值範圍爲顏色提取EMGUCV

 Image<Hsv, Byte> hsvimg = img.Convert<Hsv, Byte>();   
     Image<Gray, Byte>[] channels = hsvimg.Split(); 
     Image<Gray, Byte> imghue = channels[0];   
     Image<Gray, Byte> imgsat = channels[1]; 
     Image<Gray, Byte> imgval = channels[2];   

     Image<Gray, byte> huefilter = imghue.InRange(new Gray(?), new Gray(?));    
     Image<Gray, byte> satfilter = imghue.InRange(new Gray(?), new Gray(?)); 
     Image<Gray, byte> valfilter = imgval.InRange(new Gray(?), new Gray(?)); 

什麼是不同顏色提取不同的信道(H,S,V)的範圍內的值?是0-255還是0-128。我想檢測圖像的橙色,黑色和天藍色物體。

回答

2

你可以嘗試這樣的橙色

Image<Gray, byte> huefilter = 
       imghue.InRange(new Gray(Color.Orange.GetHue() - 10), 
            new Gray(Color.Orange.GetHue() + 10)); 

-10和+10只是一個猜測,可能是廣泛的。只是玩它,看看有什麼作品。

satfilter可以使用Color.Orange.GetSaturation()

和第三個,我假設你可以使用Color.Orange.GetBrightness()

+0

Color.Orange.GetHue()從0到255,Color.Orange.GetSaturation返回值()返回值從0-1,我有點困惑什麼img.InRange()範圍值要求...仍然我無法檢測橙色 – littleBrain 2011-05-26 08:35:49

+0

@littleBrain結帳此代碼文件http://code.google.com/ p/howme/source/browse/trunk/PC_Client/MyRobot/CameraControl.cs?spec = svn7&r = 7 – 2011-05-26 18:12:16

+0

Color.Orange.GetSaturation()...是System.Drawing命名空間下的顏色? – littleBrain 2011-05-28 03:54:14