C# 将位图图像转换为矩阵
在C#中,我需要将已转换为位图的图像转换为图像宽度和高度大小的矩阵,该矩阵由位图数据的uint8组成。换句话说,将位图数据放在矩阵中,并将其转换为uint8,这样我就可以对矩阵行和列执行我打算执行的计算 试试这样的方法:C# 将位图图像转换为矩阵,c#,matrix,bitmap,C#,Matrix,Bitmap,在C#中,我需要将已转换为位图的图像转换为图像宽度和高度大小的矩阵,该矩阵由位图数据的uint8组成。换句话说,将位图数据放在矩阵中,并将其转换为uint8,这样我就可以对矩阵行和列执行我打算执行的计算 试试这样的方法: public Color[][] GetBitMapColorMatrix(string bitmapFilePath) { bitmapFilePath = @"C:\9673780.jpg"; Bitmap b1 = new Bitmap(bitmapFil
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;
}
public Color[]GetBitMapColorMatrix(字符串bitmapFilePath)
{
bitmapFilePath=@“C:\9673780.jpg”;
位图b1=新位图(bitmapFilePath);
int hight=b1.高度;
int width=b1.宽度;
颜色[][]颜色矩阵=新颜色[宽度][];
对于(int i=0;i
我尝试一下。我已经将图像转换为灰度,这很容易。您确定这会处理位图的标题吗。我的矩阵必须是纯值,不包括位图的标题。如果你想让它变慢,可以使用GetPixel
。如果图像不小,则必须使用Bitmap.Lockbits()
,然后直接访问底层数据。根据图像的大小,使用一个专门的库(AForge.Net、Streamwave、OpenCV、IPP…)+1也是有意义的。虽然它很慢(正如@igrimpe指出的),但它是正确的,这是代码的重要质量(忽略随机路径分配)。不幸的是,b1.GetPixle(i,j)无法工作,因为我的图像已经是位图格式和灰度。它无法将颜色转换为位图格式。在这种情况下,请显示创建灰度位图的代码部分。我仍然建议签出Bitmap.Lockbits
,因为它不仅更快,而且还提供字节(正如您在问题中所述)而不是颜色