WPF:图像处理(二)灰度化(3)
来源:未知 责任编辑:责任编辑 发表时间:2014-05-20 18:33 点击:次
Int32 PixelWidth = bitmap.PixelWidth; // 图像宽度
Int32 Stride = PixelWidth << 2; // 扫描行跨距
Byte[] Pixels = new Byte[PixelHeight * Stride];
if (bitmap.Format == PixelFormats.Bgr32 || bitmap.Format == PixelFormats.Bgra32)
{ // 拷贝像素数据
bitmap.CopyPixels(Pixels, Stride, 0);
}
else
{ // 先进行像素格式转换,再拷贝像素数据
new FormatConvertedBitmap(bitmap, PixelFormats.Bgr32, null, 0).CopyPixels(Pixels, Stride, 0);
}
// 将像素数据转换为灰度数组
Byte[,] GrayArray = new Byte[PixelHeight, PixelWidth];
for (Int32 i = 0; i < PixelHeight; i++)
{
for (Int32 j = 0; j < PixelWidth; j++)
{
Int32 Index = i * Stride + (j << 2);
GrayArray[i, j] = Convert.ToByte((Pixels[Index + 2] * 19595 + Pixels[Index + 1] * 38469 + Pixels[Index] * 7471 + 32768) >> 16);
}
}
return GrayArray;
}
/// <summary>
相关新闻>>
最新推荐更多>>>
- 发表评论
-
- 最新评论 更多>>