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

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

Вернуться   Форум программистов > Delphi программирование > Мультимедиа в Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 18.04.2012, 13:25   #1
MORPEH
Пользователь
 
Регистрация: 24.11.2009
Сообщений: 45
По умолчанию Определить номер машин

Нужна помощь именно с определением. Смысл программы в том, что мы ей даем фотографию, на которой указан номер, и она должна его определить. На всех фотографиях он может быть в разных местах. Нужны ваша помощь.
Есть пример аналогичный программы, но она отказывается искать на больших фотографиях.

Очень нужны помощь.

П.С. фотографии для примера взял с авито.
Изображения
Тип файла: jpg 126406143.jpg (14.6 Кб, 250 просмотров)
Тип файла: jpg 128325500.jpg (38.3 Кб, 192 просмотров)
Вложения
Тип файла: zip getimage.zip (8.9 Кб, 41 просмотров)
MORPEH вне форума Ответить с цитированием
Старый 18.04.2012, 14:37   #2
Aliens_wolfs
Форумчанин
 
Регистрация: 16.12.2009
Сообщений: 902
По умолчанию

Цитата:
Есть пример аналогичный программы, но она отказывается искать на больших фотографиях.
А на фотографиях по меньше программа определяет номер?
Aliens_wolfs вне форума Ответить с цитированием
Старый 18.04.2012, 15:10   #3
denisbrain
Форумчанин
 
Регистрация: 29.05.2011
Сообщений: 449
По умолчанию

Цитата:
Сообщение от Aliens_wolfs Посмотреть сообщение
А на фотографиях по меньше программа определяет номер?
процедура делает изображение Ч/Б

Код:
Function OneColorToColor(Color1,color2:Tcolor):integer;
  var x:integer;
    mindeX:integer;
    r1,g1,b1:integer;
    ri,gi,bi:integer;
    delta:Integer;
begin
    r1:=GetRValue(color1);
    g1:=GetGValue(color1);
    b1:=GetBValue(color1);
    ri:=GetRValue(color2);
    gi:=GetGValue(color2);
    bi:=GetBValue(color2);
    result:=Round(SQRT(power((Ri-R1),2) + power((Gi-G1),2) + power((Bi-B1),2)));
end;

procedure TForm1.Button4Click(Sender: TObject);
var i,j:integer;
begin
  for i:=0 to form1.Image3.Picture.Bitmap.Width-1 do
  begin
    for j:=0 to form1.Image3.Picture.Bitmap.Height-1 do
    if OneColorToColor(form1.Image3.Canvas.Pixels[i,j],RGB($FF,$DE,$AD))>256 then begin
     form1.image3.canvas.Pixels[i,j]:=clblack;


     end
      else begin
      form1.image3.canvas.Pixels[i,j]:=clwhite;
      end;
  end;

  form1.Image1.Canvas.CopyRect(rect(20,20,20+(404-284),20+(375-345)),form1.Image3.Canvas,rect(284,345,404,375));

    end;

//caption:=inttostr(x)+':'+inttostr(y);
задания на pascal/delphi ICQ 368254335
Tel +79177425326 mail denis-naymov1985(at)mail.ru login skype denis.new.skype
denisbrain вне форума Ответить с цитированием
Старый 18.04.2012, 15:50   #4
Aliens_wolfs
Форумчанин
 
Регистрация: 16.12.2009
Сообщений: 902
По умолчанию

Можно еще так перевести в ч/б

Код:
procedure BlackWhite(var Bmp: TBitmap);
type
  TRGB=record
  b,g,r : byte;
   end;
  Type
    ARGB=array [0..1] of TRGB;
    PARGB=^ARGB;
var
  i, j, c : integer;
  p : PARGB;
begin
Bmp.PixelFormat:=pf24bit;
 for i:=0 to Bmp.Height-1 do
 begin
  p:=Bmp.ScanLine[i];
  for j:=0 to Bmp.Width-1 do
  begin
   c:=round(0.3*p[j].r+0.59*p[j].g+0.11*p[j].b);
   p[j].r:=c;
   p[j].g:=c;
   p[j].b:=c;
  end;
 end;
end;

procedure TForm1.Button4Click(Sender: TObject);
var
BMP: TBitmap;
begin
BMP:= TBitmap.Create;
try
BMP.Assign(Image1.Picture.Graphic);
BlackWhite(BMP);
Image1.Picture.Bitmap.Assign(BMP);
finally
BMP.Free;
end;
end;
Но суть не в этом)

Последний раз редактировалось Aliens_wolfs; 18.04.2012 в 16:04.
Aliens_wolfs вне форума Ответить с цитированием
Старый 19.04.2012, 00:22   #5
denisbrain
Форумчанин
 
Регистрация: 29.05.2011
Сообщений: 449
По умолчанию

получается придется искать текст вида <буква1><три цифры><буква2><Буква3> <код региона> по всему изображению и сопоставлять все шрифты от 1..72 и от arial до oem
задания на pascal/delphi ICQ 368254335
Tel +79177425326 mail denis-naymov1985(at)mail.ru login skype denis.new.skype
denisbrain вне форума Ответить с цитированием
Старый 19.04.2012, 00:36   #6
Rin
Негодник
Форумчанин
 
Аватар для Rin
 
Регистрация: 10.11.2009
Сообщений: 880
По умолчанию

Не, думаю, что проще будет сделать с помощью трафаретов цифр и букв. Но тут большой геморой с определением наклона, ракурсом, размером номера, неразборчивым номером (цвет, потертости). Помнится в университете проходили нейронные сети. С помощью них, наверно, нужно делать, т.к. они используются в таких задачах. Но если неправильно составить сеть, то обучать её можно лет 100.
Если помог, проси поставить минус. Будь оригинален!
Rin вне форума Ответить с цитированием
Старый 20.04.2012, 18:27   #7
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

Распознавание - функция интеллекта.
Искусственный интеллект до сих пор не создан.
Другими словами, при настоящем уровне развития науки и техники не удается создать алгоритм, который распознавал бы со 100% точностью.
Следовательно, если Вы хотите преуспеть в этом деле, следует быть готовым хорошенько изучить всю имеющуюся литературу по этому вопросу (хотя бы на английском, если китайским не владеете), а также провести массу экспериментальных исследований.
Зато в качестве бонуса можете получить кандидатскую или докторскую степень.

На мой взгляд, самое сложное в данной задаче - выделить на фото сам номер, т.е. параллелограмм с определенными ограничениями на углы и длины сторон (при очень острых углах, под которыми виден номер его, скорее всего, прочесть не удастся).
Как только найдены углы параллелограмма, применяем к ним афинное преобразование, переводящее данный фрагмент изображения в прямоугольник стандартного для номера размера.
Ну а дальше, учитывая, что в номерах применяется вполне определенный шрифт и расположение отдельных элементов гостировано, распознать отдельные буквы и цифры уже является не такой сложной задачей.
s-andriano вне форума Ответить с цитированием
Старый 20.04.2012, 20:00   #8
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

...ааа, TC по форумам пошел. Ну, дык то что ему уже давалось есть и тут

http://programmersforum.ru/showpost....29&postcount=6
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 26.05.2013, 17:27   #9
anna01
 
Регистрация: 23.11.2010
Сообщений: 7
По умолчанию

В итоге программа получилась? как успехи?
имею аналогичное задание..хотелось бы узнать пару тонкостей...
anna01 вне форума Ответить с цитированием
Старый 26.05.2013, 20:07   #10
Levsha100
Заблокирован
Старожил
 
Регистрация: 20.07.2008
Сообщений: 4,032
По умолчанию

Имею опыт написание подобных систем, могу помочь, за вознаграждение.
Levsha100 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
по букве тома определить физический серийный номер накопителя, а не номер тома @лександр Помощь студентам 6 23.09.2010 15:05
определить номер компонента файла bratello41 Паскаль, Turbo Pascal, PascalABC.NET 0 10.06.2010 23:36
Как определить номер клиента leontv Работа с сетью в Delphi 11 28.03.2010 23:19
определить номер текущей строки в synmemo LAGOX Компоненты Delphi 1 21.04.2009 01:25
Определить номер строки с наибольшей характеристикой. jenja Общие вопросы Delphi 2 26.03.2008 21:11