![]()  | 
	
 
  | 
		
			
  | 	
	
	
		
		|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны | 
![]()  | 
	
	
| 
		 | 
	Опции темы | Поиск в этой теме | Опции просмотра | 
| 
		 
			 
			#1  
			
			
			
			
		 
		
		
	 | 
||||
		
		
  | 
||||
| 
	
	
		
			
			 Здравствуйте! 
		
	
		
		
		
		
		
	
		
		
	
	
	Снова я с вопросом про пикселя и картинки Подскажите пожалуйста, как логичней и быстрей (имею в виду код) сделать следующее: Есть игра. Пытаюсь сделать для нее бота. Выглядит она следующим образом: ![]() каждые 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  
			
			
			
			
		 
		
		
	 | 
||||
		
		
  | 
||||
| 
	
	
		
			
			 Цитата: 
	
  | 
| Этот пользователь сказал Спасибо NumLock за это полезное сообщение: | ||
 
Alloc (11.10.2015)
  | ||
| 
		 
			 
			#3  
			
			
			
			
		 
		
		
	 | 
||||
		
		
  | 
||||
| 
	
	
		
			
			 Цитата: 
	
 Следует понимать из Вашего сообщения, что наиболее верный вариант в данном случае это распознавание картинки? В принципе я знаю как используя GetRValue, GetGValue, GetBValue, сравнивать цвет.. только вот к этой функции у меня не получается это прикрутить. Не поможете? Буду очень Вам признателен  | 
| 
		 
			 
			#4  
			
			
			
			
		 
		
		
	 | 
||||
		
		
  | 
||||
| 
	
	
		
			
			 Во-первых, это - не распознавание изображений. 
		
	
		
		
		
		
			
		
		
		
		
	
		
		
	
	
	Во-вторых, пикселя/нескольких достаточно. В-третьих, уже был тебе однажды скинут код, который определяет примерно похожий цвет. Да и додуматься до этого элементарно. Пусть X - нужный цвет по R компоненте, а Y - реальный цвет. Что значит "цвета похожи"? Значит разница между ними небольшая, не больше какого-то порога. Что такое разница? Это вычитание. Значит из X вычитаем Y, и смотрим, что он находится в пределах [-delta...+delta]. Проще - взять от этой разницы модуль и убедиться, что этот модуль меньше delta.  | 
| Этот пользователь сказал Спасибо Bargest за это полезное сообщение: | ||
 
Alloc (11.10.2015)
  | ||