我希望计算出与我相同尺寸的3张不同图像的平均图像。我知道这可以在matlab中轻松完成。但是我如何在c#中解决这个问题?还有一个我可以直接用于此目的的Aforge.net工具吗?
答案 0 :(得分:1)
我找到了一篇关于SO的文章,可能会指出你正确的方向。这是代码(不安全)
BitmapData srcData = bm.LockBits(
new Rectangle(0, 0, bm.Width, bm.Height),
ImageLockMode.ReadOnly,
PixelFormat.Format32bppArgb);
int stride = srcData.Stride;
IntPtr Scan0 = srcData.Scan0;
long[] totals = new long[] {0,0,0};
int width = bm.Width;
int height = bm.Height;
unsafe
{
byte* p = (byte*) (void*) Scan0;
for (int y = 0; y < height; y++)
{
for (int x = 0; x < width; x++)
{
for (int color = 0; color < 3; color++)
{
int idx = (y*stride) + x*4 + color;
totals[color] += p[idx];
}
}
}
}
int avgB = totals[0] / (width*height);
int avgG = totals[1] / (width*height);
int avgR = totals[2] / (width*height);
以下是该文章的链接: How to calculate the average rgb color values of a bitmap
答案 1 :(得分:0)