붉은 색 영역을 찾기 위해 이미지를 처리하려고합니다. 나는 픽셀을 스캔하고 적색 일 것 같으면 검정색으로 변환하고 그렇지 않으면 흰색으로 변환합니다.이 프로그램을 사용하여 이미지를 그릴 수 없습니까?
프로세스 속도를 높이기 위해 특정 픽셀을 건너 뛰고 그 자리에 검정색 또는 흰색 블록을 그릴 필요가 있습니다. 이 함수를 사용하고 있지만 어딘가에 잘못된 것 같습니다. 마지막에 얻은 이미지는 완전히 비어 있습니다.
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));
}
}
}
}
실수를 지적하거나 다른 목표를 달성 할 수있는 더 좋은 방법이 있습니까?
빨간색이 아닌지 확인하는 것은 일시적입니다. 나는 너의 suggetion을 사용할 것이다. 그러나 나는 오히려 그림이 아닌 이미지의 문제에 대한 해답을 찾고있었습니다. 이 알고리즘은 각 픽셀을 스캔하고 교체하면 꽤 잘 작동합니다. 그러나 너무 느립니다. –
저는 Atalasoft에서 일합니다 - 빠른 픽셀 액세스 및 그리기가 가능한 무료 이미징 .NET SDK (http://atalasoft.com/photofree)를 만듭니다. AtalaImage.PixelMemory 및 Atalasoft.Imaging.Drawing.Canvas - 및 http://www.atalasoft.com/docs/dotimage/docs/Getting%20at%20Pixels.html –