WorldCheats Forum

Форум
Форум посвященный главным образом MMORPG играм. Никаких ХАЙДОВ!

 
ФорумПорталЧаВоПоискПользователиГруппыРегистрацияВход

Поделиться | 
 

 Colors.au3 (CheckPixel и TrimColor)

Предыдущая тема Следующая тема Перейти вниз 
АвторСообщение
Lexx98
Пользователь
Пользователь
avatar

Мужчина Количество сообщений : 36
Возраст : 36
Награда :  
Дата регистрации : 2009-08-04

СообщениеТема: Colors.au3 (CheckPixel и TrimColor)   Вт Авг 18, 2009 7:35 am

;;; Функция TrimColor была описана в теме с рецензиями товарищем Арчи. Она просто вычисляет среднее значение трёх составляющих цвета.
;;; Функция CheckPixel проверяет наличие в прямоугольнике x1, y1; x2, y2 точки с более высоким TrimColor чем заданный $light
;;;;; UPD, улучшение CheckPixel, смотрите третий пост темы.
;;;;;;;;;;;;
Func CheckPixel($x1, $y1, $x2, $y2, $light)
Local $i, $j, $pixelfound=0
$i=$y1
While $i<=$y2 and $pixelfound==0
$j=$x1
While $j<=$x2 and $pixelfound==0
if TrimColor("0x"&Hex(PixelGetColor($j, $i), 6))>TrimColor($light) then
$pixelfound=1
endif
$j+=1
WEnd
$i+=1
WEnd

return $pixelfound
EndFunc ; =>CheckPixel


Func TrimColor($TargetTrim)
[i]#cs TrimarkColor - Comment Start

Исползуется для получения из цвета в формате RGB значение яркости пикселя. Возвращает значение от 0 до 255.
Скорость:
Функция выполняется за ~0.06-0.10 мс.
(с)
Archy26 Smile
#ce TrimarkColor - Comment End
Dim $a, $as, $as1, $as2, $a_fin
$a = Hex($TargetTrim, 6)
$a_fin = (Dec(StringTrimRight($a, 4)) + Dec(StringTrimLeft(StringTrimRight($a, 2), 2)) + Dec(StringTrimLeft($a, 4)))/3
$TargetTrim = Round($a_fin, 0)
Return $TargetTrim
EndFunc


;;;;;;;;;;;;;;
;;;;;;;;;;;;;;
;;;;;;;;;;;;;;


Последний раз редактировалось: Lexx98 (Вс Авг 23, 2009 12:48 pm), всего редактировалось 4 раз(а)
Вернуться к началу Перейти вниз
Посмотреть профиль
Archy26
Пользователь
Пользователь
avatar

Мужчина Количество сообщений : 73
Возраст : 35
Награда :  
Дата регистрации : 2009-06-01

СообщениеТема: Re: Colors.au3 (CheckPixel и TrimColor)   Ср Авг 19, 2009 12:55 am

полезно блин. Но медленно. Но ВСЁ РАВНО ПОЛЕЗНО.
Вернуться к началу Перейти вниз
Посмотреть профиль
Lexx98
Пользователь
Пользователь
avatar

Мужчина Количество сообщений : 36
Возраст : 36
Награда :  
Дата регистрации : 2009-08-04

СообщениеТема: Re: Colors.au3 (CheckPixel и TrimColor)   Ср Авг 19, 2009 4:09 am

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


UPD. Улучшил функцию CheckPixel.
- Прежде всего убрал из цикла вычисление одного и того же тримколора (будет работать чуть быстрее).
- Добавил 6-й необязательный параметр, верхняя граница яркости, по умолчанию чисто белый.
- Проверка на нижнюю границу идёт теперь не строго больше, а больше либо равно.
-- Так что теперь можно искать не только более яркую точку, но и более тёмную Для этого в $light посылаете 0x000000 (чёрный), а в $light2 тот цвет, не ярче которого ищется точка. Или необходимые границы.
П.С. Дописал во время ДТ, не проверял, но вроде не вижу недочётов, исправлений совсем чуток.


Func CheckPixel($x1, $y1, $x2, $y2, $light, $light2=0xFFFFFF)
Local $i, $j, $pixelfound=0, $PTcolor, $l1t, $l2t
$i=$y1
$l1t=TrimColor($light)
$l2t=TrimColor($light2)
While $i<=$y2 and $pixelfound==0
$j=$x1
While $j<=$x2 and $pixelfound==0
$PTcolor=TrimColor("0x"&Hex(PixelGetColor($j, $i), 6))
if $PTcolor>=$l1t and $PTcolor<=$l2t then
$pixelfound=1
endif
$j+=1
WEnd
$i+=1
WEnd

return $pixelfound
EndFunc ; =>CheckPixel
Вернуться к началу Перейти вниз
Посмотреть профиль
Archy26
Пользователь
Пользователь
avatar

Мужчина Количество сообщений : 73
Возраст : 35
Награда :  
Дата регистрации : 2009-06-01

СообщениеТема: Re: Colors.au3 (CheckPixel и TrimColor)   Пт Авг 21, 2009 12:16 pm

Лекс! А никто и не сказал, что модуль плох. НАОБОРОТ!!! Он очень хорош!
Кому как не мне это знать? Wink
И если он медленный, то только с моей точки зрения: я до того достал Белфигора быстротой, что он уже всерьёз думает, как присосаться к видеопотоку, чтобы считывать его в реальном времени с виеокарты прямо. Smile
Три дня назад всерьёз обсуждали возможности решения подобной задачи. о_О
Потом всё-таки пришли к выводу что для OCR-бота это всё-таки бред, и всего-лишь повод отрастить виртуальную письку, и отказались, до-поры - до-времени.
Вернуться к началу Перейти вниз
Посмотреть профиль
Lexx98
Пользователь
Пользователь
avatar

Мужчина Количество сообщений : 36
Возраст : 36
Награда :  
Дата регистрации : 2009-08-04

СообщениеТема: Re: Colors.au3 (CheckPixel и TrimColor)   Пт Авг 21, 2009 12:45 pm

Да я ещё во втором посте похвалу понял, расписал дальше просто чтоб другим, не сильным программистам было более понятно как оно работает. Вдобавок наверно попробую статус варпа проверять по тёмным точкам, для того и улучшил. Smile
Вернуться к началу Перейти вниз
Посмотреть профиль
Спонсируемый контент




СообщениеТема: Re: Colors.au3 (CheckPixel и TrimColor)   

Вернуться к началу Перейти вниз
 
Colors.au3 (CheckPixel и TrimColor)
Предыдущая тема Следующая тема Вернуться к началу 
Страница 1 из 1

Права доступа к этому форуму:Вы не можете отвечать на сообщения
WorldCheats Forum :: Лаборатория Читера :: EVE Online-
Перейти: