Есть картинка. Нужно вырезать первую и последнюю цифру. с удалением шумов, областями возле цифр я разобрался. Теперь нужно вырезать саму цифру Поиск первой цифры происходит так: Сканирую всю картинку - слева направо(сверху вниз) и если встретился столбец со всеми белыми пикселями - значит предыдущий столбец это конец первой цифры. и вырезаем все от начала картинки до предыдущего столба белой полосочки) С этим у меня все ок. Код возвращает нужный столбец. теперь нужно вырезать последню цифу и символ плюса. не стал сканировать через плюс , тк это гемор. Думаю проще с конца обрезать вторую цифру. И после всех обрезаний у нас останется плюс само собой. Вообщем код сканинирует картинку слева на право(сверху вниз) Как тольок находит столбец состоящий из всех белых пикселей , то останавливается и говорит нам номер столбца. с этим все ОК теперь хочу проделать то же самое но с конца : Сканируем слева на право(снизу в верху) По логике - нужно заменить TO на DOWNTO в двух циклах и все должно работать , но у меня не хочет. Помогите плиз, а то уже запутался в координатах =/ http://zalil.ru/31944295 PHP: procedure TForm1.Button1Click(Sender: TObject); var jstolbec,k, istroka:integer; begin form1.image2.Picture.Bitmap.LoadFromFile('test3.bmp'); for jstolbec:=0 to form1.Image2.Picture.Bitmap.Height-1 do begin if k=form1.Image2.Picture.Bitmap.Height-1 then begin break; end; k:=0; for istroka:=0 to form1.Image2.Picture.Bitmap.Width-1 do begin if k=form1.Image2.Picture.Bitmap.Height-1 then begin memo1.Lines.Add('вся полоска белая слева , '+inttostr(jstolbec)+' ,'+inttostr(k)); break; end; //if if form1.Image2.Picture.Bitmap.Canvas.Pixels[jstolbec,istroka]=clwhite then begin inc(k); end; //if end; // for istroka end;// jstolbec k:=0; for jstolbec:=form1.Image2.Picture.Bitmap.Height-1 downto 0 do begin if k=form1.Image2.Picture.Bitmap.Height-1 then begin break; end; k:=0; for istroka:=form1.Image2.Picture.Bitmap.Width-1 downto 0 do begin if k=form1.Image2.Picture.Bitmap.Height-1 then begin memo1.Lines.Add('вся полоска белая справа , '+inttostr(jstolbec)+' ,'+inttostr(k)); break; end; //if if form1.Image2.Picture.Bitmap.Canvas.Pixels[istroka,jstolbec]=clwhite then begin inc(k); end; //if end; // for istroka end;// jstolbec сканирование слева показывает 13 столбец(там вся полоска белая) - все ок. сканирование справа показывает 20 столбец, но должен показать 12
Во первых надо бы выложить капч 20-40 для начала) или они все так повёрнуты(с одной цифрой)?! Или дать ссылку на капчу) и тогда возможно чем-то смогу помочь)))