goto? не, не слышал
bool AntiCaptcha::Analyse()
{
// Differentiate between background and foreground
for(unsigned int y = 0; y < height; ++y)
{
for(unsigned int x = 0; x < width; ++x)
{
if(image->pixels[y][x][0] >= 160 && image->pixels[y][x][1] >= 160
&& image->pixels[y][x][2] >= 160)
{
image->pixels[y][x][0] = 0xFF;
image->pixels[y][x][1] = 0xFF;
image->pixels[y][x][2] = 0xFF;
}
else
{
image->pixels[y][x][0] = 0x00;
image->pixels[y][x][1] = 0x00;
image->pixels[y][x][2] = 0x00;
}
}
}
// Compare vectors with image
unsigned int xa, ya;
bool found = true;
int nr = -1;
int deg = 0;
for(int digit = 0; digit < numDigits; ++digit)
{
for(unsigned int y = 0; y < height; ++y)
{
for(unsigned int x = 0; x < width; ++x)
{
for(deg = 0; deg < 11; ++deg)
{
xa = x;
xout = x;
ya = y;
yout = y;
found = true;
for(int i = 0; i < lenDigits[digit]; ++i)
{
xa += transformed[digit][deg][i].first;
ya += transformed[digit][deg][i].second;
if(xa < 0 || xa >= width || ya < 0 || ya >= height)
{
found = false;
break;
}
if(!image->pixels[ya][xa][0] == 0x00)
{
found = false;
break;
}
}
if(found)
{
break;
}
}
if(found)
{
break;
}
}
if(found)
{
break;
}
}
if(found)
{
nr = digit;
break;
}
}
// Mark detected digit
if(nr != -1)
{
xa = xout;
ya = yout;
for(int i = 0; i < lenDigits[nr]; ++i)
{
xa += transformed[nr][deg][i].first;
ya += transformed[nr][deg][i].second;
image->pixels[ya][xa][0] = 0xFF;
}
}
if(nr == -1)
{
return false;
}
// Select random point of digit
int vec = random(0,lenDigits[nr]);
for(int i=0; i < vec; ++i)
{
xout += transformed[nr][deg][i].first;
yout += transformed[nr][deg][i].second;
}
return true;
}
тыц