我想在.NET中检索背景图像中的大多数颜色.可能吗?
@H_301_4@
您可以循环遍历图像中的所有像素,并使用getPixel方法确定RGB值.然后,您可以使用字典存储ARGB值以及计数.然后,您可以查看图像中最常出现的ARGB值.
var list = new Dictionary<int,int>(); Bitmap myImage = (Bitmap)Bitmap.FromFile("C:/test.jpeg"); for (int x = 0; x < myImage.Width; x++) { for (int y = 0; y < myImage.Height; y++) { int rgb = myImage.GetPixel(x,y).ToArgb(); if (!list.ContainsKey(rgb)) list.Add(rgb,1); else list[rgb]++; } }
正如所指出的,这并没有对类似的颜色表示同情.如果你想要一个更“普通”的多数颜色,你可以有一个相似性的阈值.例如而不是:
if (!list.ContainsKey(rgb)) list.Add(rgb,1); else list[rgb]++;
你可以这样做:
var added = false; for (int i = 0; i < 10; i++) { if (list.ContainsKey(rgb+i)) { list[rgb+i]++; added = true; break; } if (list.ContainsKey(rgb-i)) { list[rgb-i]++; added = true; break; } } if(!added) list.Add(rgb,1);
您可以将10的阈值提高到您需要的任何值.