edyapd |
Отправлено: 23 Июня, 2021 - 16:35:55
|
Прохожий
Покинул форум
Сообщений всего: 2
Дата рег-ции: Март 2021
Репутация: 0
|
Прошу помощи, самому справится не получается.
Имеется несколько вопросов.
1. Раскладка цветов. Мне не совсем понятно. Во многих источниках указано, что #FF0000 - это красный цвет в RGB. Но в программе красный 255 (#0000FF). Значит ли это, что в программе применяется BGR? Или я в чём-то ошибаюсь?
2. Непосредственно по findcolor. Имеется вот такая картинка
[img](для просмотра ссылки Вам необходимо авторизоваться) /img]
Я её вставляю в Paint. И мне требуется подсчитать сумму зелёных пикселей в каждой из областей. Создал такой скрипт.
Код (Отобразить)CODE:win w = window ("Безымянный - Paint");
int x[1000];
int y[1000];
int k = findcolor(1000, #x[0], #y[0], 70, 240, 340, 245, 1953330, 6, 6, 6, 6, 6, 6, w);
messagebox(k);
messagebox(x[1]);
messagebox(y[1]);
pause(2000);
mousemove(x[1], y[1], w);
pause(5000);
И хотя меня не интересуют координаты пикселей, просто решил проверить, там ли программа их ищет. Оказалось, что координаты вообще не соответствуют, даже заданной области для поиска. У меня выдало х=9, у=1. Хотя примерное количество (217) вроде как соответствует. В чём моя ошибка?
3. Можно ли сделать так, чтобы цвет можно было задавать в HEX формате. Если это возможно на данный момент, то просьба привести пример. Я попробовал несколько способов, не получилось.
4. Можно ли задать координаты элементом массива? К примеру имеется 4 зоны для поиска. И я хотел бы сделать просто в цикле перебором. Но если я подставляю вместо координаты start_Y[i] (где start_Y ранее инициализированный массив), то мне выдаёт ошибку.
5. Можно ли найти количество пикселей, не сохраняя их координат? (не выделяя под них память?). Может быть вместо указателей на массив координат поставить -1? |
|
|
Kibor |
Отправлено: 23 Июня, 2021 - 16:56:24
|
Эксперт
Покинул форум
Сообщений всего: 8217
Дата рег-ции: Март 2013
Откуда: Одесса
Репутация: 357
|
edyapd пишет: Но в программе красный 255 (#0000FF). Значит ли это, что в программе применяется BGR? Или я в чём-то ошибаюсь?
Чтение байт в hex числах идет справа на лево.
0000FF является 255.
Хоть в калькуляторе, хоть в памяти процесса, хоть в другом языке программирования.
edyapd пишет: Можно ли сделать так, чтобы цвет можно было задавать в HEX формате
int c=0x0000FF;
messagebox (c);
(Добавление)
edyapd пишет: В чём моя ошибка?
Не знаю. Код сам по себе ни о чем не говорит где и что ищется.
Координаты идут от начала зоны поиска относительно указателя. |
|
|
edyapd |
Отправлено: 23 Июня, 2021 - 18:32:31
|
Прохожий
Покинул форум
Сообщений всего: 2
Дата рег-ции: Март 2021
Репутация: 0
|
Kibor пишет: 0000FF является 255.
С этим я не спорю. Вопрос был про другое. Вот например ЗДЕСЬ красному соответствует #FF0000. И это не единственный ресурс, где именно такое соответствие. Впрочем я уже запомнил и теперь просто меняю местами первый и третий байты.
Kibor пишет: Не знаю. Код сам по себе ни о чем не говорит где и что ищется.
Координаты идут от начала зоны поиска относительно указателя.
Поиск был по картинке, которая хоть и обрамлена тэгами, но вывелась как ссылка. Но по ссылке она открывается.
Впрочем я понял, где я ошибался. Нужно было прибавить к найденным координатам, координаты левого верхнего угла зоны поиска.
Спасибо за эти разъяснения.
И можно ещё ответить на пятый вопрос?
5. Можно ли найти количество пикселей, не сохраняя их координат? (не выделяя под них память?).
Так как я не знаю. сколько пикселей может найтись. А выделять излишнюю память как-то не хочется. Те более, что мне важно только количество, а не их координаты.
И не много не по теме. Можно ли как-то закрыть окно, которое вызывается по messagebox с клавиатуры?(Отредактировано автором: 23 Июня, 2021 - 18:33:03) |
|
|
Kibor |
Отправлено: 23 Июня, 2021 - 18:46:19
|
Эксперт
Покинул форум
Сообщений всего: 8217
Дата рег-ции: Март 2013
Откуда: Одесса
Репутация: 357
|
edyapd пишет: Вот например ЗДЕСЬ красному соответствует #FF0000. И это не единственный ресурс, где именно такое соответствие
А в C++ 0x0000FF равно 255 а 0xFF0000 равно 16711680
edyapd пишет: 5. Можно ли найти количество пикселей, не сохраняя их координат? (не выделяя под них память?).
Нет.
Надо выделять. Но не думаю что те адцать интов сделают погоду.
(Добавление)
edyapd пишет: И не много не по теме. Можно ли как-то закрыть окно, которое вызывается по messagebox с клавиатуры?
Можно. Если на него навести фокус. К примеру альт таб. |
|
|
neba2101 |
Отправлено: 03 Декабря, 2021 - 12:37:49
|
Мастер
Покинул форум
Сообщений всего: 154
Дата рег-ции: Февр. 2017
Репутация: 4
|
Zireael пишет: Цитата: Как кодом упростить цвета в сохраненном изображении в памяти Кибор?
В самом кибор будет медленно, через длл нужно.
А можно пример?
Часто не принципиально уникальность цвета пикселя, а важно больше синий по координатам цвет или зеленый, или красный, или какое-то количество оттенков(например 5-10) этих цветов.
Не нужно этих 100500 млрд оттенков.(Отредактировано автором: 03 Декабря, 2021 - 12:45:52) |
|
|
Kutuz_off |
Отправлено: 14 Декабря, 2021 - 23:52:48
|
Наблюдатель
Покинул форум
Сообщений всего: 47
Дата рег-ции: Окт. 2016
Репутация: 0
|
neba2101 пишет: А можно пример?
Часто не принципиально уникальность цвета пикселя, а важно больше синий по координатам цвет или зеленый, или красный, или какое-то количество оттенков(например 5-10) этих цветов.
Не нужно этих 100500 млрд оттенков.
Мне тоже очень интересно подобное, а конкретнее: написать свой подбор цвета аналогично функции встроенной в редактор (подбор усредненных цветов из выделенной области картинки для поиска Find Heap Color).
У вас есть успехи в своем направлении?
Может кто-то уже знает, как закодить такой же подбор цветов как и в кибор?
...Только начинаю шарить эту тему...(Отредактировано автором: 14 Декабря, 2021 - 23:59:18) |
|
|
|