Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 11.10.2015, 03:34
Аватар для Alloc
Alloc Alloc вне форума
Начинающий
 
Регистрация: 17.09.2014
Сообщения: 104
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию Распознавание картинки

Здравствуйте!

Снова я с вопросом про пикселя и картинки

Подскажите пожалуйста, как логичней и быстрей (имею в виду код) сделать следующее:

Есть игра. Пытаюсь сделать для нее бота. Выглядит она следующим образом:



каждые 1.5-2.0 секунды, на экране появляются стрелочки которые необходимо нажать. Сначала одна, потом две, три и т.д. до 12.

Была идея сравнивать цвет пикселей для каждой стрелочки по всем возможным позициям (т.е. в 12 местах) но так как я заметил, что цвета пикселей одной и той же стрелки немного отличаются то сделать это будет невозможно.. да и не логично мне кажется в этой ситуации.

Слышал про способ распознавания картинок и даже нашел небольшой код (ниже).. как вы думаете, он уместен в данном случае? Или существует еще более логичный вариант?

Вот код, но он сравнивает прям все до пикселя на идентичность. В случае если вы одобрите этот вариант, заранее спрошу: как его переделать, что б небольшая разница в цвете была допустима?

Код:
function tform1.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;

Заранее спасибо!
Ответить с цитированием
  #2  
Старый 11.10.2015, 08:02
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

Цитата:
Сообщение от Alloc
небольшая разница в цвете была допустима?
http://www.delphisources.ru/forum/sh...10&postcount=2
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
Этот пользователь сказал Спасибо NumLock за это полезное сообщение:
Alloc (11.10.2015)
  #3  
Старый 11.10.2015, 20:52
Аватар для Alloc
Alloc Alloc вне форума
Начинающий
 
Регистрация: 17.09.2014
Сообщения: 104
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

Цитата:
Сообщение от NumLock

Следует понимать из Вашего сообщения, что наиболее верный вариант в данном случае это распознавание картинки?

В принципе я знаю как используя GetRValue, GetGValue, GetBValue, сравнивать цвет.. только вот к этой функции у меня не получается это прикрутить. Не поможете? Буду очень Вам признателен
Ответить с цитированием
  #4  
Старый 11.10.2015, 22:21
Аватар для Bargest
Bargest Bargest вне форума
Профессионал
 
Регистрация: 19.10.2010
Адрес: Москва
Сообщения: 2,390
Версия Delphi: XE3/VS12/FASM
Репутация: 14665
По умолчанию

Во-первых, это - не распознавание изображений.
Во-вторых, пикселя/нескольких достаточно.
В-третьих, уже был тебе однажды скинут код, который определяет примерно похожий цвет. Да и додуматься до этого элементарно.
Пусть X - нужный цвет по R компоненте, а Y - реальный цвет. Что значит "цвета похожи"? Значит разница между ними небольшая, не больше какого-то порога. Что такое разница? Это вычитание. Значит из X вычитаем Y, и смотрим, что он находится в пределах [-delta...+delta]. Проще - взять от этой разницы модуль и убедиться, что этот модуль меньше delta.
__________________
jmp $ ; Happy End!
The Cake Is A Lie.
Ответить с цитированием
Этот пользователь сказал Спасибо Bargest за это полезное сообщение:
Alloc (11.10.2015)
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 20:36.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter