![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
||||
|
||||
![]() Код:
procedure TForm1.Timer2Timer(Sender: TObject); var fl: TStringList; i,j: integer; begin Timer2.Enabled:=false; Fl:=TStringList.Create; Search('****',fl); jpg1.LoadFromFile(Fl[Fl.Count-1]); BT1.Assign(JPG1); jpg2.LoadFromFile('C:\***\готов.jpg'); BT2.Assign(JPG2); for i:=0 to BT1.Height - 1 do for j:=0 to BT1.Width - 1 do begin if BT1.Canvas.Pixels[j,i]=BT2.Canvas.Pixels[0,0] then if CheckImage(i,j) then ShowMessage('Успех!'); end; fl.Free; end; procedure TForm1.FormCreate(Sender: TObject); begin jpg1 := TJPEGImage.Create; jpg2 := TJPEGImage.Create; BT1:=TBitMap.Create; BT2:=TBitMap.Create; end; function TForm1.CheckImage(h, w: integer): boolean; var i,j,mh,mw: integer; begin result:=false; mh:=h+BT2.Height; if mh>BT1.Height then exit; mw:=w+BT2.Width; if mw>BT1.Width then exit; result:=true; for i:=h to mh do for j:=w to mw do begin if (BT1.Canvas.Pixels[j,i]<>BT2.Canvas.Pixels[j-w,i-h]) then begin result:=false; exit; end; end; end; Накидал код для поиска картинки в картинке, формат изображения jpg но вырезал из изображения кусок, но он его почему то не находит хотя в одном и том же изображении находит совпадение, в чем проблема? |
#2
|
||||
|
||||
![]() Код:
procedure TForm1.Timer2Timer(Sender: TObject); var fl: TStringList; i,j: integer; begin Timer2.Enabled:=false; Fl:=TStringList.Create; Search('C:\**',fl); jpg1.LoadFromFile('C:\***\test1.jpg'); BT1.Assign(JPG1); jpg2.LoadFromFile('C:\***\test2.jpg'); BT2.Assign(JPG2); for i:=0 to BT1.Height - BT2.Height do for j:=0 to BT1.Width - BT2.Width do begin if BT1.Canvas.Pixels[j,i]=BT2.Canvas.Pixels[0,0] then if CheckImage(i,j) then ShowMessage('Успех!'); end; fl.Free; end; procedure TForm1.FormCreate(Sender: TObject); begin jpg1 := TJPEGImage.Create; jpg2 := TJPEGImage.Create; BT1:=TBitMap.Create; BT2:=TBitMap.Create; end; function TForm1.CheckImage(h, w: integer): boolean; var i,j,mh,mw: integer; begin result:=false; mh:=h+BT2.Height-1; mw:=w+BT2.Width-1; result:=true; for i:=h to mh do for j:=w to mw do begin if (BT1.Canvas.Pixels[j,i]<>BT2.Canvas.Pixels[j-w,i-h]) then begin result:=false; exit; end; end; end; прикрепил простые картинки по которым проверяю ловит совпадение в 22,19 и 0,0 пикселей а дальше в 23,19 и 1,0 почему то у него они не равны |
#3
|
||||
|
||||
![]() Цвета не совпадают. Jpeg всё же жмёт с искажениями, перевёл представленные файлики в битмап и сразу всё заработало.
Я не понял Вашего вопроса, но всё же Вам на него отвечу! |
#4
|
||||
|
||||
![]() ну я так то в паинте одинаковым цветом сделал, но все равно оригенал у меня идет только jpg так что надо как то с ним сделать
|
#5
|
||||
|
||||
![]() Цитата:
Я не понял Вашего вопроса, но всё же Вам на него отвечу! |
#6
|
||||
|
||||
![]() так, нашел что png могу получить, там сработает?
|
#7
|
||||
|
||||
![]() Цитата:
З.Ы. Вот это в помощь. Я не понял Вашего вопроса, но всё же Вам на него отвечу! Последний раз редактировалось Alegun, 03.03.2013 в 22:04. |
#8
|
||||
|
||||
![]() Гиф на палитру завязан, пнг 24 битная картинка(+сжатие).
— Как тебя понимать? — Понимать меня не обязательно. Обязательно меня любить и кормить вовремя. На Delphi, увы, больше не программирую. Рекомендуемая литература по программированию |
#9
|
||||
|
||||
![]() 8-битный PNG также на палитру завязан. Разница только в том, что при этом он всё же может иметь Альфа канал, а в GIF-е для этого используется "прозрачный" цвет.
Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
#10
|
||||
|
||||
![]() а может ли bmp сохраняться с различиями в цвете не большими? а то иногда срабатывает иногда не находит
|
#11
|
||||
|
||||
![]() Я бы добавил вывод разницы картинок в процентах.
Смысл ф-ии checkimage? Она дублирует часто кода откуда вызывается и выполняет проверки, которые достаточно один раз выполнить. И вообще, прчему сравнивается с нулевым пикселем? — Как тебя понимать? — Понимать меня не обязательно. Обязательно меня любить и кормить вовремя. На Delphi, увы, больше не программирую. Рекомендуемая литература по программированию Последний раз редактировалось M.A.D.M.A.N., 04.03.2013 в 23:57. |
#12
|
|||
|
|||
![]() что-то похожее
на java есть http://www.sikuli.org/, не знаю насколько работоспособна и можно ли ей управлять через коммандную строку, но по идее использует всякие алгоритмы распознавания >woweook< Последний раз редактировалось Pyro, 05.03.2013 в 07:39. |
#13
|
||||
|
||||
![]() M.A.D.M.A.N ну я не сравниваю две картинки а ищю в одной другую, так что зачем разница в процентах, я вот проверил кнопка одна на картинке совпадает с образцом на 2937 пикселей из 3036, а не точный поиск похоже емкий будет, тут то я их сравнил сразу, и то ли Fraps сохраняет bmp с различиями такими в пикселях то ли, у источника такое происходит хотя не должно
|