2014-01-15 32 views
1

我有一些照片,我想做一些有趣的事情。一張照片上的像素搜索器

例如,我已經得到了一個混合了很多顏色的pohto,我希望能夠將這張照片解析爲像素並檢查每個像素是什麼顏色,以便我可以記錄究竟是什麼顏色在照片中使用最多。

是否有任何內置的庫,我可以使用它有能力解剖這樣一張照片並遍歷每個像素?

回答

1

您可以加載圖片的位圖Image.FromFile。如果它們很小,則可以循環撥打Bitmap.GetPixel。如果它們很大,我猜想會超過幾百萬像素,這會非常慢,那麼您應該使用Bitmap.LockBits來代替。所有鏈接都有樣本。您可以使用Dictionary集合構建直方圖,但要小心,因爲相似像素的R,G和B值會略有不同,因此您的集合可能會變得非常巨大。

0

加載圖像爲位圖,則過程中使用GetPixel method它返回一個顏色對象

private void GetPixel_Example(PaintEventArgs e) 
    { 

    // Create a Bitmap object from an image file. 
    Bitmap myBitmap = new Bitmap("Grapes.jpg"); 
    int width = myBitmap.Width; 
    int height = myBitmap.Height; 


    // Get the color of a pixel within myBitmap. 

    for (int widthIndex = 0;widthIndex < width;widthIndex++) 
    { 
     for (int heightIndex = 0;heightIndex < height;heightIndex ++) 
     { 
       Color pixelColor = myBitmap.GetPixel(widthIndex, heightIndex); 
       // add to dictionary 
     } 
    } 
    // Fill a rectangle with pixelColor. 
    SolidBrush pixelBrush = new SolidBrush(pixelColor); 
    e.Graphics.FillRectangle(pixelBrush, 0, 0, 100, 100); 
    } 

您可以使用字典來存儲顏色和計數