Schnelle Möglichkeit, eine Bitmap in ein boolesches Array in C # zu konvertieren?

Ich erstelle eine XNA-Anwendung, bei der ich den Screenshot viermal pro Sekunde von einer Webcam aufnehme und dann versuche, ihn in ein Boolesches Array umzuwandeln, wenn die Pixelfarbe Rot unter einem bestimmten Schwellenwert liegt. Wenn ich es in eine Texture2D konvertiere, verzögert es sich nicht, aber wenn ich versuche, die einzelnen Pixel zu ermitteln, verzögert es sich, selbst wenn die Webcam eine Auflösung von 176 x 144 hat.

Dies ist der Code, um die Bitmap zu erhalten:

<code>public Bitmap getBitmap()
    {
        if (!panelVideoPreview.IsDisposed)
        {
            Bitmap b = new Bitmap(panelVideoPreview.Width, panelVideoPreview.Height, PixelFormat.Format32bppRgb);
            using (Graphics g = Graphics.FromImage(b))
            {
                Rectangle rectanglePanelVideoPreview = panelVideoPreview.Bounds;
                Point sourcePoints = panelVideoPreview.PointToScreen(new Point(panelVideoPreview.ClientRectangle.X, panelVideoPreview.ClientRectangle.Y));
                g.CopyFromScreen(sourcePoints, Point.Empty, rectanglePanelVideoPreview.Size);
            }

            return b;
        }
        else
        {
            Bitmap b = new Bitmap(panelVideoPreview.Width, panelVideoPreview.Height);
            return b;
        }
    }
</code>

Dies ist der Code zum Konvertieren der Bitmap in ein Boolesches Array:

<code>public bool[,] getBoolBitmap(uint treshold)
    {
        Bitmap b = getBitmap();

        bool[,] ar = new bool[b.Width, b.Height];

        for (int y = 0; y < b.Height; y++)
        {
            for (int x = 0; x < b.Width; x++)
            {
                if (b.GetPixel(x, y).R < treshold)
                {
                    ar[x, y] = false;
                }
                else
                {
                    ar[x, y] = true;
                }
            }
        }

        return ar;
    }
</code>

Antworten auf die Frage(1)

Ihre Antwort auf die Frage