Bitmapa do wektora

0

Witam.
Mógłby mi ktoś doradzić jak zamienić bitmapę, która jest w odcieniach szarości na wektor, który będzie posiadał wartości z zakresu od 0 (biały) do 1 (czarny)?

Pozdrawiam.

1

Jakoś tak...

            Bitmap bmp = (Bitmap)Image.FromFile("plik.png");
            float[,] data = new float[bmp.Height, bmp.Width];
            BitmapData bd = bmp.LockBits(new Rectangle(0, 0, bmp.Width, bmp.Height), ImageLockMode.ReadOnly, PixelFormat.Format24bppRgb);
            byte* scanline = (byte*)bd.Scan0;
            for (int i = 0; i < bd.Height; i++)
            {
                for (int j = 0; j < bd.Width; j++)
                    data[i, j] = (float)(255 - scanline[j*3]) / 255.0f;
                scanline = scanline + bd.Stride;
            }
            bmp.UnlockBits(bd);
            bmp.Dispose();

Zakładam że bitmapa jest 24-bitowa, z czego pobieram tylko jeden kanał (przy odcieniach szarości R==G==B).

0

Nie wiem dlaczego, ale u mnie ma problem z zadeklarowaniem tablicy floatów. Mimo, że tablica ma 64 pola to indeksy ma tylko pierwsze 14.

user image

Co skopałem?

0

Wyświetl ją sobie, bo może to debuger tylko tak wyświetla.

1 użytkowników online, w tym zalogowanych: 0, gości: 1