扫描区域(2D)图

时间:2012-08-09 08:17:13

标签: image photoshop pixels area scanning

假设我有100张单色A4纸,它被切割成不同的形状和图形(2D),扫描,保存为图像文件,然后需要按照区域的升序排序。

有没有一种有效的方法来找到数字区域并进行排列?

1 个答案:

答案 0 :(得分:1)

如果所有图片都具有相同的尺寸且所有形状都是相同的颜色(如果我不理解你的问题就是这种情况),你可以计算平均颜色值。

计算出的颜色越接近图形的颜色,图像上的形状就越大。

一些代码:

private Color GetAverageImageColor(Image img)
    {
        double[] rgb = new double[3];
        Color col;
        Bitmap bmp = new Bitmap(img);

        for(int y = 0; y < bmp.Size.Height; y++)
        {
            for(int x = 0; x < bmp.Size.Width; x++)
            {
                col = bmp.GetPixel(x, y);
                rgb[0] += col.R;
                rgb[1] += col.G;
                rgb[2] += col.B;
            }
        }

        for (int i = 0; i < 3; i++)
        {
            rgb[i] /= (bmp.Size.Height * bmp.Size.Width);
            rgb[i] = Math.Round(rgb[i]);
        }

        return Color.FromArgb((int) rgb[0], (int) rgb[1], (int) rgb[2]);
    }