Здравствуйте, гость ( Вход | Регистрация )

> Смена Яркости точки или картинки., Находим картинку или несколько связаных точек, даже при смене яркости.
_LESTAT_
сообщение 23.10.2012, 13:10
Сообщение #1


****

Apprentice
Сообщений: 103
Регистрация: 12.3.2011
Группа: Пользователи
Наличность: 0
Пользователь №: 13.512
Возраст: 25



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

Пока что я допер до следующего. На нужной мне иконке, я снял определённую точку, в разных состояниях иконки, тоесьт когда она доступна, и когда недоступна. Перевел полученные цвета с помощью таблицы в полезных советах в RGB вид и вот что получил.
Цитата
dec R G B
556106 74 124 8
277797 37 61 4

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

Ну вот идею я описал, а вот как реализовать я не знаю, помогите пожалуйста. Я ниче не смыслю в преобразовании цветов. Если это получиться с одной точкой, то потом можно применить к небольшим картинкам. Думаю это пригодиться многим, и сэкономит объем кода.
Для чего это мне нужно: Определяем и записываем три определенных пикселя на иконке(гет колором), а потом можем найти эту иконку в другом месте экрана , по пикселям расположенным на тех же местах друг от друга, причем даже если яркость всех трех пикселей изменилась примерно на равное значение.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
 
Ответить в эту темуОткрыть новую тему
Ответов
DarkMaster
сообщение 23.10.2012, 20:15
Сообщение #2


***********

Модератор UOPilot
Сообщений: 9.796
Регистрация: 2.12.2008
Группа: Супермодераторы
Наличность: 30378
Пользователь №: 11.279



Код

log mode compact
log clear

set %color [ 1 1 ] 12642802
set %color [ 2 1 ] 9821212
set %color [ 3 1 ] 6857136

//Для начала разложим их на каналы

for #i 1 3 1
    set %colorRGB [ #i 1 ] %color [ #i 1 ] / 256 / 256 // Синий
    set %colorRGB [ #i 2 ] ( %color [ #i 1 ] - %color [ #i 1 ] / 256 / 256 * 65536 ) / 256 // Зеленый
    set %colorRGB [ #i 3 ] %color [ #i 1 ] - %color [ #i 1 ] / 256 * 256 // Красный
log [ #i 1 ]    %colorRGB [ #i 1 ]  
log [ #i 1 ]    %colorRGB [ #i 2 ]
log [ #i 1 ]    %colorRGB [ #i 3 ]
end_for

// Теперь вычислим сумму каналов для того, чтобы узнать какой процент составляет каждый канал.

for #i 1 3 1
    for #n 1 3 1
        set #coefBase #coefBase + %colorRGB [ #i #n ]
    end_for
end_for
log  coefBase #coefBase

for #i 1 3 1
    for #n 1 3 1
        set %colorRGB [ #i #n ] %colorRGB [ #i #n ] * 1000
    end_for
end_for

// Далее вычисляем коэффициенты для каждого из каналов.

for #i 1 3 1
    for #n 1 3 1
        set %colorCoefSource [ #i #n ] %colorRGB [ #i #n ] / #coefBase
log #i #n ]    %colorCoefSource [ #i #n ]  
    end_for
end_for


// Тут пропущены полностью аналогичные действя для найденной точки.
// Единственное отличие: умножать не на 1000, а на 100000.
// Подразумевается что у нас есть массив с кооэфициентами
// для найденной точки %colorCoefFinded

for #i 1 3 1
    for #n 1 3 1
        set %succes [ #i #n ] %colorCoefFinded [ #i #n ] %colorCoefSource [ #i #n ]
log #i #n ]    %succes [ #i #n ]  
    end_for
end_for

// В массиве %succes мы имеем процент совпадения коэффицинта
// каждого канала для каждой точки.

stop_script

Теперь вроде на правду похоже.

Сообщение отредактировал DarkMaster - 23.10.2012, 21:47


--------------------
Скрипты UOPilot под заказ.
Консультации по UOpilot 15$/час.
Услуги Lua разработчика (не пилот, проекты, постоянка)
Disсоrd:
Kov____

Контакт актуален, подпись актуальна.
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения

Сообщений в этой теме
_LESTAT_   Смена Яркости точки или картинки.   23.10.2012, 13:10
DarkMaster   Подсвеченную так же можно найти get color'ом. ...   23.10.2012, 13:40
_LESTAT_   Объясняю задачу более подробно. 1)Есть рамка(напри...   23.10.2012, 14:11
DarkMaster   Тогда вообще не вижу проблемы. Берете три точки, н...   23.10.2012, 15:11
_LESTAT_   У меня проблема такова, что вопервых я не знаюк ак...   23.10.2012, 15:56
DarkMaster   Посмотри внимательнее на заданные точки. Я их при...   23.10.2012, 16:15
DarkMaster   Давайте с примером. Есть три эталонных цвета: log...   23.10.2012, 17:38
DarkMaster   Там не обработано исключение деления на ноль. Будь...   23.10.2012, 17:57
_LESTAT_   Спасибо большое ! Пока не опробовал, но выгля...   23.10.2012, 18:42
DarkMaster   Почти. Коэффициент позволяет проверить соотношени...   23.10.2012, 19:57
_LESTAT_   Сколько не пытался, так ничего и не понял :( С пом...   24.10.2012, 10:08
DarkMaster   А вы сравните результат первого и второго прогона....   24.10.2012, 10:45
DarkMaster   Кстати учитывая точность, то можно обойтись просты...   24.10.2012, 11:42
_LESTAT_   Спасибо, посмотрел свежим взглядом я увидел, что к...   25.10.2012, 7:20
DarkMaster   set #xN #xFirst + #xOffset * (#n - #n / 2 * 2) set...   25.10.2012, 12:16
_LESTAT_   set #xN #xFirst + #xOffset * (#n - #n / 2 * 2) se...   25.10.2012, 16:55
змеючище   столкнувшись с похожей проблемой(в течении минуты ...   26.10.2012, 1:24
_LESTAT_   2 Змеючище Такой способ подойдет для переливающихс...   26.10.2012, 5:16
DarkMaster   просто из любопытства. насколько точно другие точк...   26.10.2012, 13:22


Ответить в эту темуОткрыть новую тему
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 

- Текстовая версия | Версия для КПК Сейчас: 27.6.2026, 3:25
Designed by Nickostyle