Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Быстро узнать наличие малого рисунка в большом? / 8 сообщений из 8, страница 1 из 1
02.04.2020, 16:29
    #39943196
SDA_H
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Быстро узнать наличие малого рисунка в большом?
Добрый день! Для онлайн игры.
Программа в цикле по таймеру каждые 2-4 секунды нажимает клавишу(активизируя игровой сканер).Если обнаружен противник, он
отображается в колонке грида как определенный ч.б значёк

Как быстро можно сравнить небольшой рисунок -часть screen short'а (пистограмма 1см x 1см - значёк ) с шаблоном такого же размера?
И как это быстрее сделать: scanline, попиксельное сравнение, и т.п.
Нужно ли переводить рисунки в черно белые для быстрого сравнения или сравнивать напрямую?
Screenshort делается в чикле каждые 2-4 секунды
...
Рейтинг: 0 / 0
02.04.2020, 17:07
    #39943215
Кроик Семён
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Быстро узнать наличие малого рисунка в большом?
тема интересная, решил тоже погуглить и вот что нашлось:

так гуглилfind sub-image delphi

Finding a Bitmap contained inside another Bitmap
https://www.codeproject.com/Articles/38619/Finding-a-Bitmap-contained-inside-another-Bitmap

fast finding of small image in a bigger image
https://stackoverflow.com/questions/3074771/fast-finding-of-small-image-in-a-bigger-image
...
Рейтинг: 0 / 0
02.04.2020, 17:12
    #39943218
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Быстро узнать наличие малого рисунка в большом?
Проще отхакать эту игру и перехватить событие добавления противника в грид.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
02.04.2020, 18:12
    #39943246
SDA_H
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Быстро узнать наличие малого рисунка в большом?
Спасибо! Scanline вроде сравнивает быстрее. Нашел:
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
Type
  TRGB=record
  b,g,r : byte;
  end;
 
    ARGB=array [0..1] of TRGB;
    PARGB=^ARGB;
    PRGB = ^TRGB;
 
function CompareImages(A,B : TBitmap) : Boolean;
var
  i,j : integer;
  p1,p2 : PARGB;
begin
 Result:=false;
 if A.Width<>B.Width then exit;
 if A.Height<>B.Height then exit;
 for i:=0 to A.Height-1 do
 begin
  p1:=A.ScanLine[i];
  p2:=B.ScanLine[i];
  for j:=0 to A.Width-1 do
  begin
   if not ((p1[j].r=p2[j].r) and (p1[j].g=p2[j].g) and (p1[j].b=p2[j].b)) then exit;
  end;
 end;
 Result:=true;
end;
...
Рейтинг: 0 / 0
02.04.2020, 18:26
    #39943251
Virtual Student
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Быстро узнать наличие малого рисунка в большом?
SDA_H,

А для решения вашей задачи не достаточно ли сравнивать один пиксель большего изображения на наличие?
Для разных мелких значков один раз вычислить координаты закрашенных пикселей, не?
...
Рейтинг: 0 / 0
03.04.2020, 18:15
    #39943620
SDA_H
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Быстро узнать наличие малого рисунка в большом?
Неа, overview изменчива - как жизнь)
...
Рейтинг: 0 / 0
03.04.2020, 18:37
    #39943635
Быстро узнать наличие малого рисунка в большом?
...
Рейтинг: 0 / 0
03.04.2020, 18:46
    #39943637
ъъъъъ
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Быстро узнать наличие малого рисунка в большом?
Няшык, йоу.
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Быстро узнать наличие малого рисунка в большом? / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]