Выбор картинки
> > > >
"; $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"; ?>