Реферат: Алгоритмы выделения контуров
TDirectional Direct; // Направление движения жука
// Идем до тех пор, пока не встретим черную область
for (Y = 0; Y < FromImage->Height; Y++)
{
Line = (Byte*)FromImage->ScanLine[Y];
for (X = 0; X < FromImage->Width; X++)
{
B = Line[X];
if (B < 255)
break;
}
// Если встречен объект, отличающийся от цвета фона (255 - белый)
// прервать поиск
if (X != FromImage->Width)
break;
}
// Если не нашли ни одного черного пиксела, то выходим из процедуры
if ((X == FromImage->Width) && (Y == FromImage->Height))
return;
// Если все нормально, начинаем обход по алгоритму жука
ToLine = (Byte*)ToImage->ScanLine[Y];
ToLine[X] = 0;
// Поворачиваем налево (новое направление - север)
cX = X;
cY = Y - 1;
Direct = North;
Line = (Byte*)FromImage->ScanLine[cY];
// Пока не придем в исходную точку, выделяем контур объекта
while ((cX != X) || (cY != Y))