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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.09.2010, 17:35   #11
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

А есть такие компоненты??
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 23.09.2010, 17:38   #12
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Или попробовать сторонние компоненты?
+1
я бы тоже порекомендовал попробовать использовать сторонние компоненты/библиотеки. Для цифр/английских букв реально даже бесплатные найти.
Если вопрос морали и лицензионности не стоит - попробуйте прикрутить FineReader (а это однозначно Номер Первый в России!)
Serge_Bliznykov вне форума Ответить с цитированием
Старый 25.09.2010, 18:44   #13
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

Ну, вообщем, как выделять рамкой текст я разобрался, сделал. А как поместить код распознавания-то в эту рамку? Я пробовал так:
Код:
procedure TForm1.Image1MouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
   Edit1.Text:=GetImageChars(Image1.Picture.Bitmap);
   Start:=FALSE;
   Form1.Image1.Canvas.Pen.Mode:=pmNot;
end;
но естественно меня вылетакет с ошибкой EAccessViolation.
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 25.09.2010, 19:24   #14
Sibedir
Тот ещё
Старожил
 
Аватар для Sibedir
 
Регистрация: 14.11.2007
Сообщений: 2,242
По умолчанию

Цитата:
Ну, вообщем, как выделять рамкой текст я разобрался, сделал. А как поместить код распознавания-то в эту рамку? Я пробовал так:
artemavd, я вот все вкурить не могу.
КАК МОЖНО ПОМЕСТИТЬ КОД В ИЗОБРАЖЕНИЕ???
Sibedir вне форума Ответить с цитированием
Старый 25.09.2010, 19:29   #15
Gambler
Игрок
Форумчанин
 
Аватар для Gambler
 
Регистрация: 29.10.2006
Сообщений: 367
По умолчанию

Если известен шрифт - распознать можно сравнением с эталоном. Получишь из выделенной части битмапа - текст. А с ним что дальше делать?
Жизнь всегда игра. Но смерть - не всегда поражение.

#define true (Math.random()>0.5) //Удачной отладки
Gambler вне форума Ответить с цитированием
Старый 25.09.2010, 19:31   #16
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

Цитата:
КАК МОЖНО ПОМЕСТИТЬ КОД В ИЗОБРАЖЕНИЕ???
Мне нужно, чтобы распознавалось только та часть изобаржения, которую я выделил мышкой прямоугольником. ЧТобы граница области распознавания была равна граница моего прямоугольника.
Цитата:
А с ним что дальше делать?
Занести распознанный текст куда-нибудь в Edit.
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 26.09.2010, 00:03   #17
Sibedir
Тот ещё
Старожил
 
Аватар для Sibedir
 
Регистрация: 14.11.2007
Сообщений: 2,242
По умолчанию

Цитата:
Мне нужно, чтобы распознавалось только та часть изобаржения, которую я выделил мышкой прямоугольником. ЧТобы граница области распознавания была равна граница моего прямоугольника.
Так какой код для этого куда помещать нужно? Просто скопируй часть изображения (выделенное прямоугольником) в TBitMap и рампознавай себе наздоровье.
Sibedir вне форума Ответить с цитированием
Старый 26.09.2010, 04:12   #18
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

Цитата:
Так какой код для этого куда помещать нужно?
Как я понял, то вот этот:
Код:
Edit1.Text:=GetImageChars(Image1.Picture.Bitmap);
т.е. нужно создать переменную типа TBitMap и ей присвоить выделенную область? Как-то так, чтоли:
Код:
procedure TForm1.Image1MouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
var
 b: TBitMap;
begin
 b:=TBitMap.Create;
 b:=CopyRect(Х,Y,Image1.Picture.Bitmap);
   Edit1.Text:=GetImageChars(Image1.Picture.Bitmap);
   Start:=FALSE;
   Form1.Image1.Canvas.Pen.Mode:=pmNot;
end;
поправьте меня пожалуйста если я не прав?
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 26.09.2010, 10:38   #19
Sibedir
Тот ещё
Старожил
 
Аватар для Sibedir
 
Регистрация: 14.11.2007
Сообщений: 2,242
По умолчанию

Да нет же. Все гораздо проще.
Код:
procedure TForm1.Image1MouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
var
  b: TBitmap;
  r: TRect;
begin
  r.Left := Min (bX, X);
  r.Top := Min (bY, Y);
  r.Right := Max (bX, X);
  r.Bottom := Max (bY, Y);

  b := TBitmap.Create;
  b.Height := r.Bottom - r.Top;
  b.Width := r.Right - r.Left;

  b.Canvas.CopyRect (Rect (0, 0, b.Width, b.Height), Image1.Canvas, r);

  Edit1.Text := GetImageChars (b);

  b.Free;
end;

procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  bX := X;
  bY := Y;
end;
Sibedir вне форума Ответить с цитированием
Старый 26.09.2010, 11:53   #20
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

Код:
bX и bY
имееют тип integer? Твой код работает???)

При компиляции ругается и говорит, что не знает че такое Min...
--------

С тем, что выше, разобрался. Для работы функции Min нужно было написать
Код:
uses Math;
Теперь компилируется и запускается. Но когда я выбираю рамкой какую-то букву на картинке, то получаю ошибку, что "Параметр задан неверно".
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Выполнить код через макрос vbs segail Microsoft Office Excel 0 04.04.2010 19:25
Выполнить код при закрытии окна просмотра segail Microsoft Office Excel 7 08.02.2010 11:22
Есть ли возможность выполнить код при инициализации подключаемого модуля? shurik_7866 Общие вопросы C/C++ 0 07.12.2009 22:59
Как выполнить код Java из Delphi? ap008 Общие вопросы Delphi 2 22.05.2008 09:51
как выполнить один и тот же код для двух разных событий puz Общие вопросы Delphi 5 11.05.2007 19:03