假设我有 100 张单色 A4 纸,它们被切割成不同的形状和图形(2D),扫描,保存为图像文件,然后需要按区域升序排序。
有没有一种有效的方法来找到图形的区域并排列它们?
如果所有图片的尺寸相同并且所有形状的颜色相同(如果我没有误解您的问题,那就是这种情况),您可以计算平均颜色值。
计算出的颜色越接近图形的颜色,图像上的形状就越大。
一些代码:
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]);
}