Показать сообщение отдельно
  #13  
Старый 24.04.2013, 16:32
ProDaNTe ProDaNTe вне форума
Новичок
 
Регистрация: 25.12.2011
Сообщения: 75
Репутация: 10
По умолчанию

Цитата:
Не хочу смотреть, потому что в коде даже форматирования нормального нету.
Ну если это поможет то вот:
Есть картинка капчи далее ImageSrav[53]
Далее есть 50 шаблонов картинок ImageSrav[3..52]
Запускаем цикл установки позиции 2 шт по x и y соответственно
Код:
 for posx := 3 to 77 do begin
 for posy := 3 to 15 do begin
Запускаем цикл в нутри тех 2 циклов который сравнивает шаблон с капчей,
Код:
 repeat
    iz:=iz+1;
    all:=0;
    s:=0;
    proz:=0;
 x:=ImageSrav[iz].Width-1;
 y:=ImageSrav[iz].Height-1;
а именно он считает сколько всего не белых точек all
Код:
 for l := 0 to x do begin
 for j := 0 to y do begin
 
if ImageSrav[iz].Canvas.Pixels[l,j]<>RGB(255,255,255) then begin
  all:=all+1;
 end;
 
 end;
 end;
Затем считает сколько совпадений пикселей по не белым точкам s
Код:
 for l := 0 to x do begin
 for j := 0 to y do begin
if (ImageSrav[iz].Canvas.Pixels[l,j]=ImageSrav[53].Canvas.Pixels[l+posx,j+posy]) and
   (ImageSrav[iz].Canvas.Pixels[l,j]<>RGB(255,255,255)) then
begin
s:=s+1;
end;
 end;
 end;
потом считает процент совпадения proz
Код:
 proz:=round(s/all*100);
Если больше 60 процентов то строке cap приравнивается предидущая надпись исходя из номера изображения
Код:
  if proz>60 then begin
  case iz of
  3..7:cap:=cap+'0';
  8..12:cap:=cap+'1';
  13..17:cap:=cap+'2';
  18..22:cap:=cap+'3';
  23..27:cap:=cap+'4';
  28..32:cap:=cap+'5';
  33..37:cap:=cap+'6';
  38..42:cap:=cap+'7';
  43..47:cap:=cap+'8';
  48..52:cap:=cap+'9';
  end;
  end;
Ну и в конце все это выводится в эдит!!!
Ответить с цитированием