Быстрый способ преобразовать растровое изображение в логический массив в C #?
Я делаю приложение XNA, где я делаю снимок экрана с веб-камеры 4 раза в секунду, а затем пытаюсь преобразовать его в логический массив, когда цвет пикселя Red ниже определенного порога. Когда я конвертирую его в Texture2D, он не запаздывает, но когда я пытаюсь получить отдельные пиксели, он запаздывает, даже если разрешение веб-камеры составляет 176x144.
Это код для захвата растрового изображения:
<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>
Это код для преобразования растрового изображения в логический массив:
<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>