2012-12-04 94 views
1

我需要確定的圖像中包含的特定顏色:如何確定圖像是否包含特定的顏色?

r:255 
g:0 
b:192 

我發現這一點,但不是返回點,我需要的,如果圖像中包含上述顏色返回一個布爾值。

public static List<Point> FindAllPixelLocations(this Bitmap img, Color color) 
     { 
      var points = new List<Point>(); 

      int c = color.ToArgb(); 

      for (int x = 0; x < img.Width; x++) 
      { 
       for (int y = 0; y < img.Height; y++) 
       { 
        if (c.Equals(img.GetPixel(x, y).ToArgb())) points.Add(new Point(x, y)); 
       } 
      } 

      return points; 
     } 

回答

4

聽起來像是你只需要通過

if (c.Equals(img.GetPixel(x, y).ToArgb())) return true; 
+0

呃!!!!!有時它只是在我面前開始。謝謝! – DDiVita

+0

您可能需要將函數的類型變爲bool,以免最終出現檢查列表。 –

1

像這樣的東西來代替

if (c.Equals(img.GetPixel(x, y).ToArgb())) points.Add(new Point(x, y)); 

public static bool HasColor(this Bitmap img, Color color) 
    { 
     for (int x = 0; x < img.Width; x++) 
     { 
      for (int y = 0; y < img.Height; y++) 
      { 
       if (img.GetPixel(x, y) == color) 
        return true; 
      } 
     } 
     return false; 
    } 
0

正是這兩個答案都是正確的,但你必須知道即GetPixel(x, y)SetPixel(x, y)顏色非常慢,而對於高分辨率的圖像並不好。

爲此,你可以使用LockBitmap類在這裏:Work with bitmaps faster

這是約5時間快。

相關問題