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

2 страниц V  1 2 >  
Ответить в эту темуОткрыть новую тему
> Findcolor спятил.. ¯\_(ツ)_/¯
Fors1k
сообщение 4.12.2018, 0:00
Сообщение #1


*****

Journeyman
Сообщений: 497
Регистрация: 19.12.2017
Группа: Пользователи
Наличность: 2401
Пользователь №: 18.746



Код:
Код
set #a findcolor (664, 569 701, 877 1 1 (32768) %a workwindow -1 17)    
get color #color %a [1 1], %a [1 2] workwindow
log color is #color

Лог:
Код
color is 107


Попросил искать 32768, а он находит 107, и считает, что сделал все как я хотел..


--------------------
Для связиИзображение
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 4.12.2018, 1:55
Сообщение #2


**********

Elder
Сообщений: 3.480
Регистрация: 18.8.2014
Группа: Пользователи
Наличность: 26689
Пользователь №: 16.971
Возраст: 29



Findcolor и findimage фиксились, а color нет.
В get color не учитывается рамка окна, т. е. он проверяет цвет левее и выше чем надо.
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Fors1k
сообщение 4.12.2018, 2:51
Сообщение #3


*****

Journeyman
Сообщений: 497
Регистрация: 19.12.2017
Группа: Пользователи
Наличность: 2401
Пользователь №: 18.746



Цитата(cirus @ 4.12.2018, 1:55) *

Findcolor и findimage фиксились, а color нет.
В get color не учитывается рамка окна, т. е. он проверяет цвет левее и выше чем надо.

Спасибо за инфу про гет колор. Пока ждал ответа, проблема решилась, сменой отклонения с 17 на 15.
Но разобраться очень хотелось, и я решил добить вопрос, так как нужного цвета на экране нет)

Исходя из новой информации цвет проверил иначе:
Код
set #a findcolor (664, 569 701, 877 1 1 (32768) %a workwindow -1 17)    
move %a [1 1], %a [1 2]
sendex ^a

Пилот показал темно-зеленый цвет.
Я искал зеленый цвет, и , оказалось, пиксель на границе черной буквы, и желтого фона дает зеленый цвет=)


--------------------
Для связиИзображение
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 4.12.2018, 3:20
Сообщение #4


**********

Elder
Сообщений: 3.480
Регистрация: 18.8.2014
Группа: Пользователи
Наличность: 26689
Пользователь №: 16.971
Возраст: 29



Цитата
так как нужного цвета на экране нет

При погрешности цвета в 17% может много чего найтись.
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 4.12.2018, 13:00
Сообщение #5


***********

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



Цитата
Попросил искать 32768, а он находит 107, и считает, что сделал все как я хотел..

Переводите числа в hex, раскладывайте на каналы, считайте. В десятичной системе данные не наглядны из-за особенностей формирования числа.
Хотя конкретно этот пример подзрителен.


--------------------
Скрипты UOPilot под заказ.
Консультации по UOpilot 15$/час.
Услуги Lua разработчика (не пилот, проекты, постоянка)
Disсоrd:
Kov____
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Fors1k
сообщение 4.12.2018, 14:33
Сообщение #6


*****

Journeyman
Сообщений: 497
Регистрация: 19.12.2017
Группа: Пользователи
Наличность: 2401
Пользователь №: 18.746



Цитата(cirus @ 4.12.2018, 3:20) *

При погрешности цвета в 17% может много чего найтись.

Ой, так я мучаюсь с файндколором.. То не видит цвет, то видит там, где его нет.. Причем на тесте все идеально, а когда пускаю в работу, и отхожу от компа, вечером проверяю, и иногда вижу, что он делал что хотел..(
Цитата(DarkMaster @ 4.12.2018, 13:00) *

Переводите числа в hex, раскладывайте на каналы, считайте. В десятичной системе данные не наглядны из-за особенностей формирования числа.
Хотя конкретно этот пример подзрителен.

Это даст безошибочную работу файндколора?
Куда вписать heх код цвета, если в вики сказано, что fc понимает только десятичный код?
Расскажи поподробнее плиз.


--------------------
Для связиИзображение
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 4.12.2018, 15:01
Сообщение #7


***********

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



Цитата
Это даст безошибочную работу файндколора?

Это даст понимание того, что вы делаете.
Всего есть три канала: Red, Green, Blue. Каждый канал кодируется значением от 0 до 255, т.е. в шестнадцатиричном виде это будет от 0x00 до 0xFF (0x - говорит о том, что это шестнадцатиричное значение). После чего значения всех каналов собираются вместе. В пилоте порядок каналов не RGB, а BGR. Это связано с виндовым api (так работет шустрее). Т.е.:
R=0x88
G=0xAA
B=0xFF
Полчается:
0xFFAA88
После чего получившееся число предобразовывается в десятичный вид.
% отклонения (deviation) рассчитывается от значения каждого канала в отдельности. Т.е.%
R=0x88 +/- 255 / 100 * deviation
G=0xAA +/- 255 / 100 * deviation
B=0xFF +/- 255 / 100 * deviation
Очевидно, что математически это совсем не равно (для любой системы счисления):
0xFFAA88 +/- 255 / 100 * deviation
Поэтому для числа:
0x000001
погрешность 1% привидет к диапазону:
0x000000
0x020203
В десятичном виде:
от 1
до 131 073
Вполне очевидно, что без разложения на каналы 1% тут никак не получается.

Автоматизация преобразований: https://forum.uokit.com/index.php?showtopic=22116

// Вообще 17% это очень дофига. Очень. Это +/-17%, т.е. 34% всего возможного диапазона цветов. Скорее всего имеет смысл изменить искомый цвет либо задать дипазоны для каждого канала в отдельности.


--------------------
Скрипты UOPilot под заказ.
Консультации по UOpilot 15$/час.
Услуги Lua разработчика (не пилот, проекты, постоянка)
Disсоrd:
Kov____
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Fors1k
сообщение 4.12.2018, 15:11
Сообщение #8


*****

Journeyman
Сообщений: 497
Регистрация: 19.12.2017
Группа: Пользователи
Наличность: 2401
Пользователь №: 18.746



Благодарю. Отклонение снизил до 3, пока полет норм.


--------------------
Для связиИзображение
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
sutra
сообщение 4.12.2018, 20:11
Сообщение #9


*******

Adept
Сообщений: 923
Регистрация: 10.8.2018
Группа: Пользователи
Наличность: 0
Пользователь №: 19.007



Цитата
set #a findcolor (664, 569 701, 877 1 1 (32768) %a workwindow -1 17)

findcolor с погрешностью 17% ищет +- 43 . Надо было посмотреть ещё и значение найденного цвета %a[1 3]. Думаю что найденное значение наверняка попадает в заданный интервал.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
sutra
сообщение 4.12.2018, 20:22
Сообщение #10


*******

Adept
Сообщений: 923
Регистрация: 10.8.2018
Группа: Пользователи
Наличность: 0
Пользователь №: 19.007



Попробуй проверить найденный цвет и вот если он не попадает в интервал, то тут уж вопрос прямиком к Кнайту на фикс.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
sutra
сообщение 4.12.2018, 20:40
Сообщение #11


*******

Adept
Сообщений: 923
Регистрация: 10.8.2018
Группа: Пользователи
Наличность: 0
Пользователь №: 19.007



А вообще поиск осуществляется не совсем корректно. Насколько я понимаю нужно найти зелёный цвет в приличном диапазоне, так чтобы отсечь "паразитные" цвета задавай реальный диапазон поиска вместо погрешности. С условием типа R(0-15)G(88-168)B(0-15). Так огромная погрешность распространится практически только на зелёную составляющую цвета.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Fors1k
сообщение 4.12.2018, 22:51
Сообщение #12


*****

Journeyman
Сообщений: 497
Регистрация: 19.12.2017
Группа: Пользователи
Наличность: 2401
Пользователь №: 18.746



Цитата(sutra @ 4.12.2018, 20:11) *

Надо было посмотреть ещё и значение найденного цвета

2775296

А вообще все норм с fc. Я просил найти зеленый, он нашел зеленый. Просто так глючно отрисовался виндой один пиксель на границе черной буквы, и золотистого фона, что он оказался зеленым, а глазу он естественно не заметен.
К кнайту вопрос может быть только в том, что get color мне не позволил сразу узнать код цвета, который fc нашел, и в этом плане хорошо бы его поправить.


--------------------
Для связиИзображение
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 4.12.2018, 22:59
Сообщение #13


***********

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



Цитата
К кнайту вопрос может быть только в том, что get color мне не позволил сразу узнать код цвета, который fc нашел, и в этом плане хорошо бы его поправить.

Ничерта не понял (IMG:style_emoticons/default/smile.gif) Может это потому, что я не кнайт, но у меня есть сомнения.


--------------------
Скрипты UOPilot под заказ.
Консультации по UOpilot 15$/час.
Услуги Lua разработчика (не пилот, проекты, постоянка)
Disсоrd:
Kov____
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
sutra
сообщение 5.12.2018, 1:07
Сообщение #14


*******

Adept
Сообщений: 923
Регистрация: 10.8.2018
Группа: Пользователи
Наличность: 0
Пользователь №: 19.007



Цитата
2775296

На счёт get color ничего сказать не могу, я им вообще не пользуюсь, хотя Ваш пример у меня отработал корректно. А вот по поводу findcolor, ну прямо как в воду глядел, именно 17% погрешность и сыграла с Вами злую шутку.
Код
log clear
set #r colortored(32768)
set #g colortogreen(32768)
set #b colortoblue(32768)
log #r #g #b                  // значения RGB: 0 128 0
set #r2 colortored(2775296)
set #g2 colortogreen(2775296)
set #b2 colortoblue(2775296)
log #r2 #g2 #b2               // значения RGB: 0 89 42
end_script

А вот если бы Вы использовали поиск по диапазону RGB то пиксель был бы проигнорирован:
Код
set #a findcolor (664, 569 701, 877 1 1 (R(0-15)G(88-168)B(0-15)) %a workwindow -1)

Лично моё мнение, использование deviation действительно реально работает и решает свою задачу только в findimage. В findcolor в подавляющем большинстве случаев бесполезный параметр, да ещё и ставящий в тупик многих пользователей, если они досконально не просчитали что будет искаться. Как правило, ищется одна, максимум две цветовых составляющих, влияющих на искомый цвет. Исключение, если искать белый или чёрный цвет, ну или оттенки серого, где все три составляющие RGB имеют практически одинаковые значения. Во всех остальных случаях лучше использовать диапазон RGB. Если же искомый цвет однозначно известен, deviation так же не нужен.

А вот для Кнайта кстати есть пожелание. Я то конечно пользуюсь Шопом, но думаю многим было бы удобней, если бы помимо цифрового значения цвета, которое на вскидку не даёт понимания цвета, показывались бы значения RGB (при выборе Ctrl-A), ну или можно было бы настроить вывод по желанию, либо так, либо так.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 5.12.2018, 2:05
Сообщение #15


**********

Elder
Сообщений: 3.480
Регистрация: 18.8.2014
Группа: Пользователи
Наличность: 26689
Пользователь №: 16.971
Возраст: 29



Цитата
К кнайту вопрос может быть только в том, что get color мне не позволил сразу узнать код цвета, который fc нашел, и в этом плане хорошо бы его поправить.
Ничерта не понял smile.gif Может это потому, что я не кнайт, но у меня есть сомнения.

Код
// сделать привязку Ctrl+A
get color #color1 100 200
get color #color2 100 200 workwindow
log #color1   #color2    // разные цвета
end_script

Они будут одинаковые, если у окна нет рамки, например, рабочий стол.
Если указывается хендл, то надо к координатам прибавлять ширину и высоту рамки. Т. е. проверять не в координатах 100 200, а к примеру 108 231. Т. е. цвет проверяется не от левого верхнего угла клиента, а левого верхнего угла рамки окна. Из-за этого идёт смещение координат. Вот это надо исправить.
В той же мозиле понажимай Ctrl+A чуть левее окна, координата X будет отрицательной, вот это тоже надо учитывать.

Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
sutra
сообщение 5.12.2018, 2:33
Сообщение #16


*******

Adept
Сообщений: 923
Регистрация: 10.8.2018
Группа: Пользователи
Наличность: 0
Пользователь №: 19.007



Цитата
// сделать привязку Ctrl+A

Абсолютно верно!! Естественно работает по разному. Я если делаю Ctrl-A, ВСЕГДА тычу в рамку. Но тычу только если надо быстро что-то посмотреть. А в рабочих скриптах лучше привязывать рабочее окно не методом тыка, а по найденному хендлу, по координатам, и т.п., а если очень надо поизвращаться (у меня таких ситуаций не возникало) можно использовать параметры типа child.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
sutra
сообщение 5.12.2018, 2:46
Сообщение #17


*******

Adept
Сообщений: 923
Регистрация: 10.8.2018
Группа: Пользователи
Наличность: 0
Пользователь №: 19.007



Но вопрос у меня всё равно остался, ведь в том примере оба оператора выполнялись с указанием workwindow и у меня результат одинаковый, независимо от того куда я тыкал привязку. В зависимости от привязки Ctrl-A - результат полученного цвета разный, НО ОДИНАКОВЫЙ для get и fc.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
sutra
сообщение 5.12.2018, 2:57
Сообщение #18


*******

Adept
Сообщений: 923
Регистрация: 10.8.2018
Группа: Пользователи
Наличность: 0
Пользователь №: 19.007



Цитата
// разные цвета

И у меня они разные, только если привязка не к рамке. Так что сдаётся мне, что наверное наш коллега, что-то напутал. Во всяком случае у меня всё работает как часы.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
sutra
сообщение 5.12.2018, 3:18
Сообщение #19


*******

Adept
Сообщений: 923
Регистрация: 10.8.2018
Группа: Пользователи
Наличность: 0
Пользователь №: 19.007



Извиняюсь перед коллегой, я нашёл причину, и причина fc
Код
log clear
// сделать привязку Ctrl+A к клиенту
set #a findcolor (100, 20 100, 20 1 1 (R(0-255)) %a workwindow -1)
log %a[1 1] %a[1 2] %a[1 3]   // 100 20 0
set #b findcolor (100, 20 100, 20 1 1 (R(0-255)) %b 2 -1)
log %b[1 1] %b[1 2] %b[1 3]   // 100 20 16777215
end_script


Цвет разный (белый и чёрный), а координаты вернулись одинаковые.

Подводя итог, при данной реализации финда, привязку к клиенту делать нежелательно и нельзя, если требуются координаты найденных пикселей!!! Уже извинился за свой бред, но и здесь будет не лишним ещё раз извиниться!!!
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
WKnight
сообщение 5.12.2018, 3:19
Сообщение #20


********

Разработчик UO Pilot'а
Сообщений: 1.639
Регистрация: 9.1.2006
Группа: Пользователи
Наличность: 0
Пользователь №: 4.688



Цитата
помимо цифрового значения цвета, которое на вскидку не даёт понимания цвета, показывались бы значения RGB (при выборе Ctrl-A)
Значение RGB показывается во всплывающей подсказке на кнопке с цифровым значением цвета.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения

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

 

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