Что нового

Поиск конкретного фрагмента рисунка в заданной области экрана

vlv993

Новичок
Сообщения
20
Репутация
0
Здравствуйте. Я пишу бота и сейчас захотел изменить алгоритм на более действенный. До 4 утра читал форум и не разобрался как сделать, единственное понял что лучше всего подходит наверное PixelSearchEx, хотя если можно реализовать по другому - не откажусь от советов. Если можно напишите код на примере вложенного рисунка, как задать параметры поиска и потом искать в определенном окне, а при нахождении выдавать 1 или 0, если не найдет. Искать надо не весь рисунок, достаточно будет красный цвет и хотя бы 3 точки связанные между собой на нем, чтоб определять изгиб. Извините за нубский вопрос, но с автоитом познакомился с неделю назад, да и вообще не программист я, к тому же не молодой )
 

Вложения

  • Безымянный.png
    Безымянный.png
    3.4 КБ · Просмотры: 412

Belfigor

Модератор
Локальный модератор
Сообщения
3,608
Репутация
941
изгиб всегда одинаковый? или каждый раз уникальный (отличается от предыдущего хотя бы 1 пикселем)
 
Автор
V

vlv993

Новичок
Сообщения
20
Репутация
0
Belfigor, изгибы разные, но те которые меньше этого анализировать не надо, там скорость срабатывания индикаторов перегрузки маленькая и я анализирую индикаторы, а на этот изгиб и еще два посильнее согнутых не успевает среагировать на индикатор скрипт, точнее он то реагирует но остаточная инерция портит всю картину ) На сильные изгибы я буду зажимать клавиши управления на 100-130 мс. Мне для примера хоть бы на этот, а на 2 других я по шаблону сам сделаю.
 

Belfigor

Модератор
Локальный модератор
Сообщения
3,608
Репутация
941
PixelSearchEx это лишь логическая обертка для различных унифицированных наборов индикаторов, не проще ли тебе (если заранее известна область появления изгиба) сканировать один пиксель по вертикали, и найдя вершину изгиба, сосканировать от места где найден пиксель +10Y влево до положительного результата, далее от последнего результата вправо до упора, и если найдется и там цвет (уже 3 красных точки), просто четвертую точку, там в каком-нибудь предполагаемом фиксированном месте?


Добавлено:
Сообщение автоматически объединено:

И PixelSearchEx никакой не понадобится
 
Автор
V

vlv993

Новичок
Сообщения
20
Репутация
0
В том то и дело что появляться то он будет не в одном месте, а в области размером 700х100, да и при больших изгибах левый конец красной части конца удилища уже будет вершиной, вот для примера:
 

Вложения

  • Безымянный1.png
    Безымянный1.png
    4.9 КБ · Просмотры: 354

Belfigor

Модератор
Локальный модератор
Сообщения
3,608
Репутация
941
А, ну не такая уж большая область, завтра на работе пока буду, постараюсь накатать скриптик. Ну а для моего предыдущего поста, просто контрольные точки из всей площади, перейдут в правую часть. Или таки нужно еще и определить сколько красного осталось?


Добавлено:
Сообщение автоматически объединено:

скринов только различных надо с десяток
 
Автор
V

vlv993

Новичок
Сообщения
20
Репутация
0
Спасибо за ответы, в той области красный цвет только на удилище может быть.
 

Belfigor

Модератор
Локальный модератор
Сообщения
3,608
Репутация
941
Дак таки вопрос, цель то главная - определить точку переход желтого к красному или таки просто наличие красного в нескольких точках на правой части изгиба?
 
Автор
V

vlv993

Новичок
Сообщения
20
Репутация
0
Просто наличие красного в нескольких точках и связь между ними на правой части изгиба. По ссылке http://rghost.ru/58438382 3 скрина в архиве, форум не дает больше 200кб, а я там дал полные скрины, чтоб понять ситуацию. Это всё один и тот же изгиб до 150кг, есть еще 150-400кг и более 400кг изгиб, если клюнет, то заскриню и их.


Добавлено:
Сообщение автоматически объединено:

Вот нашел все 3 изгиба, там есть и увеличенные.
 

Вложения

  • 79cd889b1423.rar
    128.3 КБ · Просмотры: 5

Belfigor

Модератор
Локальный модератор
Сообщения
3,608
Репутация
941
Аааа, таки я понял. Нам нужно определить изогнута ли удочка да?
 
Автор
V

vlv993

Новичок
Сообщения
20
Репутация
0
Да )) И при чем насколько сильно, если слабые изгибы, то их я не анализирую и выполняется один алгоритм выуживания, а если один из этих 3 будет, которые буду анализировать, то алгоритм выуживания совсем другой.
 

Belfigor

Модератор
Локальный модератор
Сообщения
3,608
Репутация
941
Если правильно понял, то что-то типа этого:
Код:
MsgBox(0,0,_GetKlujet(1))
MsgBox(0,0,_GetKlujet(2))

Func _GetKlujet($Rect)
	If $Rect = 1 Then Local $aRect[4] = [1113, 814, 1113+66, 814+104]
	If $Rect = 2 Then Local $aRect[4] = [1183, 815, 1183+66, 815+104]
	If $Rect = 3 Then Local $aRect[4] = [0, 0, 0, 0]
	If $Rect = 4 Then Local $aRect[4] = [0, 0, 0, 0]
	If $Rect = 5 Then Local $aRect[4] = [0, 0, 0, 0]

	Local $Col = 0x972B21
	Local $Shade = 10
	Local $Pos = 0
	Local $tempPos = 0
	Local $Counter = 0

	For $y = $aRect[3] To $aRect[1] Step -1
		$Pos = PixelSearch($aRect[2],$y,$aRect[0],$y, $Col, $Shade)
		If Not @error Then
			If $Counter > 0 Then
				If $tempPos > $Pos[0] Then Return True
			EndIf
			$tempPos = $Pos[0]
			$Counter += 1
			$y -= 10
		EndIf
	Next
	Return False
EndFunc

Если удочка согнуто пишет возвращает True, если нет False


Добавлено:
Сообщение автоматически объединено:

Ну чтобы изгибы определять просто подправь алгоритм и смотри насколько сильно именьшается найденный красный по X, если уменьшается не сильно - значит изгиб сильный, если изменяется сильно - значит изгиб слабый
 
Автор
V

vlv993

Новичок
Сообщения
20
Репутация
0
Большой монитор? ) Я так понимаю это крайняя левая точка с красным цветом?


Добавлено:
Сообщение автоматически объединено:

У меня идея, а нельзя ли сделать так? х1 и у1 это координаты закидывания, то есть куда бы не закинул, то относительно этих коорд будет проверять наличие цветов на других координатах
Код:
Select
	  Case (PixelGetColor($x1+1,$y1-4) <> 0xB00000 and PixelGetColor($x1+1,$y1-4) <> 0xFFFFFF) And (PixelGetColor($x1,$y1-2) = 0xB00000)
 

Belfigor

Модератор
Локальный модератор
Сообщения
3,608
Репутация
941
монитор 2560х1600 :smile:.
Реализовать то можно как угодно, но таки вместо pgc, я бы тот же 1 пиксель проверял с помощью пиксельсерча с шейдером. Ибо pgc ненадежен на мой взгляд, поплывет цвет на 1 шейд и всё, пгк не увидит его. Например на разных компах с разными видеокартами, в одной и той же точке, на глаз цвет один но отличаться может на пару шейдеров. Тут то pgc и сдает свои позиции перед пиксельсерчем с шейдом.
 
Автор
V

vlv993

Новичок
Сообщения
20
Репутация
0
чтоб точно указать коорд, а не область можно же так ?
Код:
PixelSearch(20, 300, 20, 300, 0xFF0000, 10)
 

Belfigor

Модератор
Локальный модератор
Сообщения
3,608
Репутация
941
да, именно, вместо x1y1x2y2 вбивается xyxy
 

bugaj

Знающий
Сообщения
140
Репутация
11
OffTopic:

монитор 2560х1600 :smile:.
Реализовать то можно как угодно, но таки вместо pgc, я бы тот же 1 пиксель проверял с помощью пиксельсерча с шейдером. Ибо pgc ненадежен на мой взгляд, поплывет цвет на 1 шейд и всё, пгк не увидит его. Например на разных компах с разными видеокартами, в одной и той же точке, на глаз цвет один но отличаться может на пару шейдеров. Тут то pgc и сдает свои позиции перед пиксельсерчем с шейдом.

че за шейдеры? я у себя никогда не замечал, что на разных компах разные цвета...ну на 2х трех в куче виртуалок запускал, но ниразу ничего не сбивалось....вы меня смущаете. Как бы такое затестить..

 
Автор
V

vlv993

Новичок
Сообщения
20
Репутация
0
Вы попробуйте не на виртуалках, у них же видеокарта общая, а именно на другом компе с другим железом, вот там могут быть не совпадения цвета.
 

Belfigor

Модератор
Локальный модератор
Сообщения
3,608
Репутация
941
bugaj сказал(а):
че за шейдеры? я у себя никогда не замечал, что на разных компах разные цвета...ну на 2х трех в куче виртуалок запускал, но ниразу ничего не сбивалось....вы меня смущаете. Как бы такое затестить..

Шейдеры какие не помню. Суть в том что чуть ли не со 100% гарантией разница в цветах будет. У одного человека, она была заметна аж визуально. В ЕВЕ, там где у всех черный фон космической карты, у него шел ГРАДИЕНТ, от поносно карамельному в правом нижнем углу, в светло желотому в правом верхнем и левом нижнем.
 

bugaj

Знающий
Сообщения
140
Репутация
11
Вы попробуйте не на виртуалках, у них же видеокарта общая, а именно на другом компе с другим железом, вот там могут быть не совпадения цвета.

La2 на компе и ноуте также в 2 окна гонял, причем попеременно один и тот же скрипт то там то тут запускал. Я правда с точными цветами не работал или диапазон или вообще цветонезависимый поиск...просто если ботов кому то делать, вот и думаю как тут быть...ведь у меня так не бывало...
 
Верх