.net – 如何在图像中获得多数颜色?

前端之家收集整理的这篇文章主要介绍了.net – 如何在图像中获得多数颜色?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想在.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的阈值提高到您需要的任何值.

猜你在找的Windows相关文章