Я пытаюсь обработать изображение для обнаружения областей красного цвета в нем. Я сканирую пиксели, и если они окажутся ДОСТАТОЧНО красными, они преобразуются в черный, в противном случае - в белый.
Чтобы ускорить процесс, я пропускаю определенные пиксели, и мне нужно рисовать блоки черного или белого цвета на их месте. Я использую эту функцию, но она, кажется, где-то не так. Изображение, которое я получаю в итоге, совершенно пустое.
public void ProcessFrame( ref Bitmap image )
{
int skip = 10;
Graphics g = Graphics.FromImage(System.Drawing.Image.FromHbitmap(image.GetHbitmap()));
SolidBrush black = new SolidBrush(Color.Black);
SolidBrush white = new SolidBrush(Color.White);
for (int i = 0; i < image.Width; i=i+skip)
{
for (int j = 0; j < image.Height; j = j + skip)
{
Color cl = image.GetPixel(i, j);
if (cl.R > (cl.G * 2) && cl.R > (cl.B * 2))
{
g.FillRectangle(black, new Rectangle(i, j, skip, skip));
}
else
{
g.FillRectangle(white, new Rectangle(i, j, skip, skip));
}
}
}
}
Можете ли вы указать на ошибку, ИЛИ на какой-либо другой лучший способ добиться того, к чему я стремлюсь?