Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/270.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将位图图像转换为矩阵_C#_Matrix_Bitmap - Fatal编程技术网

C# 将位图图像转换为矩阵

C# 将位图图像转换为矩阵,c#,matrix,bitmap,C#,Matrix,Bitmap,在C#中,我需要将已转换为位图的图像转换为图像宽度和高度大小的矩阵,该矩阵由位图数据的uint8组成。换句话说,将位图数据放在矩阵中,并将其转换为uint8,这样我就可以对矩阵行和列执行我打算执行的计算 试试这样的方法: public Color[][] GetBitMapColorMatrix(string bitmapFilePath) { bitmapFilePath = @"C:\9673780.jpg"; Bitmap b1 = new Bitmap(bitmapFil

在C#中,我需要将已转换为位图的图像转换为图像宽度和高度大小的矩阵,该矩阵由位图数据的uint8组成。换句话说,将位图数据放在矩阵中,并将其转换为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;
}
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
,因为它不仅更快,而且还提供
字节(正如您在问题中所述)而不是
颜色