在 C# 中,我需要将已经转换为 Bitmap 的图像转换为一个大小等于图像宽度和高度的矩阵,该矩阵由 Bitmap 数据的 uint8 组成。换句话说,将 Bitmap 数据放入矩阵中并将它们转换为 uint8,以便我可以对矩阵行和列进行所需的计算。
public Color[][] GetBitMapColorMatrix(string bitmapFilePath)
{
bitmapFilePath = @"C:\9673780.jpg";
Bitmap b1 = new Bitmap(bitmapFilePath);
int hight = b1.Height;
int width = b1.Width;
Color[][] colorMatrix = new Color[width][];
for (int i = 0; i < width; i++)
{
colorMatrix[i] = new Color[hight];
for (int j = 0; j < hight; j++)
{
colorMatrix[i][j] = b1.GetPixel(i, j);
}
}
return colorMatrix;
}
GetPixel
。如果图像不是“小”的,则必须使用Bitmap.Lockbits()
然后直接访问底层数据。根据图像的大小,也可能有必要使用专门的库(如AForge.Net,Streamwave,OpenCV,IPP...)。 - igrimpeBitmap.Lockbits
,因为它不仅更快,而且可以提供byte
(正如你在问题中所述),而不是color
。 - igrimpe