我有一些照片,我想做一些有趣的事情。一張照片上的像素搜索器
例如,我已經得到了一個混合了很多顏色的pohto,我希望能夠將這張照片解析爲像素並檢查每個像素是什麼顏色,以便我可以記錄究竟是什麼顏色在照片中使用最多。
是否有任何內置的庫,我可以使用它有能力解剖這樣一張照片並遍歷每個像素?
我有一些照片,我想做一些有趣的事情。一張照片上的像素搜索器
例如,我已經得到了一個混合了很多顏色的pohto,我希望能夠將這張照片解析爲像素並檢查每個像素是什麼顏色,以便我可以記錄究竟是什麼顏色在照片中使用最多。
是否有任何內置的庫,我可以使用它有能力解剖這樣一張照片並遍歷每個像素?
您可以加載圖片的位圖Image.FromFile
。如果它們很小,則可以循環撥打Bitmap.GetPixel
。如果它們很大,我猜想會超過幾百萬像素,這會非常慢,那麼您應該使用Bitmap.LockBits
來代替。所有鏈接都有樣本。您可以使用Dictionary
集合構建直方圖,但要小心,因爲相似像素的R,G和B值會略有不同,因此您的集合可能會變得非常巨大。
加載圖像爲位圖,則過程中使用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);
}
您可以使用字典來存儲顏色和計數