Выбор картинки
";
$massiv=array();
$os;
$circles=0;
//$rgb = imagecolorat($im, 11, 15);
//echo $rgb;
$width = imagesx($im);
$height = imagesy($im);
echo "Высота картинки: ".$height.", ширина картинки: ".$width.". Переводим в бинарный формат:";
// определяем цвет пикселя
function bw($picture, $x, $y)
{
$color = imagecolorsforindex($picture, imagecolorat($picture, $x, $y));
if ($color['red']==255 AND $color['green']==255 AND $color['blue']==255)
{
return 0;
}
return 1;
}
function scan($x,$y,$os)
{
$ves=0;
$strok=0;
global $massiv;
$delta=$os-$y;
$x++;
$k=1;
// echo "x=".$x.", y=".$y.", os=".$os." delta=".$delta;
while($massiv[$x][$os]==0)
{
for($k=1;$k<=10;$k++)
{
if($massiv[$x][$os-$delta-$k]==1 AND $massiv[$x][$os+$delta+$k]==1)
{
//echo ":".$x." - detected"; break;
$ves++; break;
//return 1; // Строка OK.
}
}
//echo "
:".$massiv[$x][$os];
$x++;
$strok++;
}
// echo "
Строк".$strok;
// echo "
Вес".$ves;
if($ves>=$strok)
{
return 1;
}
// echo "
-:".$massiv[$x][$os-$delta-1];
// echo "
+".$massiv[$x][$os+$delta+1];
}
function centr($x,$y)
{
//$stroka=0;
$start_y=$y;
global $massiv;
while($massiv[$x][$y]!=0)
{
$stroka++;
$y++;
}
//echo "stroka=".$stroka;
$os=($start_y+$start_y+$stroka-1)/2;
if(scan($x,$start_y,$os)==1)
{
//echo "CIRCLE !!!";
return 1;
}
else
{
return 0;
//echo "NO CIRCLE !!!";
}
}
//function centr($x, $y)
//{
// return 0;
//}
// Картинка в бинарный формат
for($i=0; $i<$height; $i++)
{
//echo $i.") ";
for($j=0; $j<$width; $j++)
{
$massiv[$i][$j]=bw($im,$j,$i);
echo $massiv[$i][$j];
}
echo "";
}
// Начинаем
for($i=0; $i<$height; $i++)
{
for($j=0; $j<$width; $j++)
{
// Признак начала окружности
if($massiv[$i][$j]==1 AND $massiv[$i+1][$j-1]==1 AND $massiv[$i][$j+1]==1)
{
$x=$i;
$y=$j;
// echo "
Point(".$x.", ".$y.")";
while($massiv[$x][$y]!=0)
{
if($massiv[$x+1][$y+1]==0 AND $massiv[$x][$y+1]==0)
{
//echo " No ";
break 2;
}
$y++;
// echo "y=".$y;
}
//echo "
Вызов проверки";
// echo "centr(".$i.",".$j.")";
if(centr($i,$j))
{
$circles++;
}
}
}
}
echo "DETECTED ".$circles." CIRCLES";
?>