Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.01.2013, 12:45   #1
ClMlD
Форумчанин
 
Аватар для ClMlD
 
Регистрация: 09.07.2011
Сообщений: 185
Вопрос Графика-распознать цифры

Добрый час. Помогите решить задачу:
Есть область на которой ранндомно вылетают числа от 0 до 9 моя задача распознать эти цифры по эталону, это не капча это обычные цифры которые имеют один тип но не все цифры имеют одинаковый размер, по ширине это цифра 1 и 4 если бы они были одинаковые можно было бы определить область где вырезать цифру а так не как не выходит, что можно сделать? по высоте они одинаковые только по ширине 1 и 4 разные, каким методом мне воспользоваться для сравнения по эталону ? Спасибо за внимание
ClMlD вне форума Ответить с цитированием
Старый 21.01.2013, 13:37   #2
leoparrd
Заблокирован
 
Регистрация: 27.08.2010
Сообщений: 37
По умолчанию

Ну так и сделайте их одинаковыми. Нужно проанализировать битмап и сделать так сказать box из касательных. То есть вырезать символ так, чтобы стороны бокса касались символа. А потом массштабировать по вертикали но так. чтобы ширина менялась пропорционально высоте. Ну и потом скопировать этот символ в эталонное поле с центрированием. То есть таким образом любого размера подгоняем под один размер. Ну а когда символ подогнан, можно применять к нему шаблон для сравнения.
leoparrd вне форума Ответить с цитированием
Старый 21.01.2013, 13:39   #3
leoparrd
Заблокирован
 
Регистрация: 27.08.2010
Сообщений: 37
По умолчанию

Ну или растянуть бокс под размеры шаблона.
leoparrd вне форума Ответить с цитированием
Старый 23.01.2013, 01:25   #4
ClMlD
Форумчанин
 
Аватар для ClMlD
 
Регистрация: 09.07.2011
Сообщений: 185
По умолчанию

Парился парился что то не выходит не как помогите создать цикл:
Высота всегда 18 длина любая
нужно как то пускать волну по всей высоте от 0 до 18 если нет пикселя +1 к длине и снова ищем по всей высоте если нашли определенный пиксель запоминаем его и уже считаем сколько пикселей он будет в длину в итоге узнаем где цифра и какой она длины
ClMlD вне форума Ответить с цитированием
Старый 24.01.2013, 00:53   #5
ClMlD
Форумчанин
 
Аватар для ClMlD
 
Регистрация: 09.07.2011
Сообщений: 185
По умолчанию

Ребят может как то так ? но к сожалению данный код просто ложит программу вместе с делфи выложу чисто для примера , помогите пожалуйста не как не получается
Код:
var
  c:Boolean;
  x,x1,y:Integer;
  label poisk,cifr;
begin
  x:=0;
poisk:
for y:=0 to 18 do
if Image1.Canvas.Pixels[y,x] = 0 then
begin
c:=True;
x1:=x;
end
else
begin
  x:=x+1;
  goto poisk;
end;
cifr:
if c then
for y:=0 to 18 do
if Image1.Canvas.Pixels[y,x1] = 0 then
begin
x1:= x1+1;
 goto cifr;
end
else
begin
  Label1.Caption:=IntToStr(x1)+'-'+inttostr(x);
end;  
end;
ClMlD вне форума Ответить с цитированием
Старый 24.01.2013, 08:41   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

CIMID, много программистов (я например) вообще против использования оператора Goto в Паскаль/Delphi (см. дебаты на этом же форуме по данному вопросу).
но, если уж Вы его используете, то в любом случае, это надо делать корректно,
не стоит делать БЕСКОНЕЧНОЕ зацикливание!
Код:
  cifr:
  if c then
    for y := 0 to 18 do
      if Image1.Canvas.Pixels[y, x1] = 0 then
      begin
        x1 := x1 + 1;
        goto cifr;
      end;
как Вы думаете, что будет, если встретится нулевая точка? Будет переход на метку, опять цикл, и опять переход на метку и так до бесконечности!

алгоритм у Вас никуда не годится!
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как распознать цифры из фотографии вагона? Georgios Общие вопросы Delphi 52 14.03.2013 00:57
Как записать в Екселе цифры c степенью или индексом, так чтоб цифры считало, индексы (степень) игнор Andrew_K1982 Microsoft Office Excel 7 06.03.2013 23:10
задача - найти произведение первой цифры целой части и третей цифры дробной части вещественного числа. LAZARUS maks22 Lazarus, Free Pascal, CodeTyphon 2 30.01.2012 19:53
Распознать ноты eXtr0gen Мультимедиа в Delphi 6 25.09.2010 20:21
Сортирует цифры по строкам, а надо чтобы сортировала цифры , записанные через пробелы Алексей_xXx Помощь студентам 14 06.05.2009 17:42