Kibor |
Отправлено: 24 Апреля, 2019 - 12:51:52
|
Эксперт
Покинул форум
Сообщений всего: 8217
Дата рег-ции: Март 2013
Откуда: Одесса
Репутация: 357
|
Добавил возможность указать разбежность цвета в findcolor
Синтаксис:
findcolor(-1, #x[0],#y[0], стартx, стартy, финишx, финишy, color, Красный_меньше_на, Красный_больше_на, Зеленый_меньше_на, Зеленый_больше_на, Синий_меньше_на, Синий_больше_на, -1); |
|
|
lavpochta |
Отправлено: 17 Февраля, 2021 - 23:13:09
|
Наблюдатель
Покинул форум
Сообщений всего: 27
Дата рег-ции: Нояб. 2019
Репутация: 0
|
[quote=Kibor]Функция scanpixel сравнивает введенный цвет с цветом пикселя в веденных координатах ориентируясь на разбежности в цветах RGB.
Синтаксис:
scanpixel(КоординатаX, КоординатаY, цвет_в_int, Красный_меньше_на, Красный_больше_на, Зеленый_меньше_на, Зеленый_больше_на, Синий_меньше_на, Синий_больше_на, указатель_на _окно)
Так же возможно сравнивать цвет пикселя загруженного ранее изображения или полученного скриншота в двухмерный массив int
CODE:int SCREEN[500][700];
//...............
int k=scanpixel(200, 125, 35436455, 15, 15, 15, 15, 15, 15, #SCREEN[0][0]);
messagebox (k);
А в findcolor может вместо указателя на окно принимать двухмерный массив? |
|
|
lavpochta |
Отправлено: 18 Февраля, 2021 - 07:44:32
|
Наблюдатель
Покинул форум
Сообщений всего: 27
Дата рег-ции: Нояб. 2019
Репутация: 0
|
Zireael пишет: Цитата: А в findcolor может вместо указателя на окно принимать двухмерный массив?
Нет. Хотя такую возможность добавить недолго.
Решаю задачу по распознаванию определённого цвета и его местоположения в изображении в виде полоски полученной функцией screen. Цвет перемещается внутри этой полоски скачками, поэтому хотел сделать снимок полоски в память и отладится в статистике, но по ходу выполнения программы. Затем хотел распознать местоположение другого цвета в тот же момент времени. Без возможности сканировать цвет в изображении в памяти это невозможно.
Можно реализовать принятие массива в findcolor? Пожалуйста... |
|
|
Zireael |
Отправлено: 18 Февраля, 2021 - 10:20:36
|
Эксперт
Покинул форум
Сообщений всего: 4462
Дата рег-ции: Нояб. 2017
Репутация: 585
|
Используйте findimage, можно искать картинку в 1 пиксель нужного цвета.
CODE:int my_image[1][1];
my_image[0][0] = 5187586; // цвет пикселя, который нужно найти
int x, y; // переменные для findimage
int image[1920][1080]; // массив для скрина
screen (#image[0][0], 0, 0, 1920, 1080, -1);
// поиск пикселя на скрине
if(findimage(1, #my_image[0][0], -1, #x, #y, 0, 0, 1920, 1080, #image[0][0]))
{
messagebox(format(x)+" "+format(y)); // координаты пикселя
}
else messagebox("Не найдено"); |
|
|
Kibor |
Отправлено: 19 Марта, 2021 - 13:26:27
|
Эксперт
Покинул форум
Сообщений всего: 8217
Дата рег-ции: Март 2013
Откуда: Одесса
Репутация: 357
|
Доработал findcolor
Появилась возможность искать цвет пикселя на загруженном ранее изображение или полученном скриншоте в двухмерный массив int
CODE:int SCREEN[500][700];
//...............
int k=findcolor(-1, #x[0],#y[0], стартx, стартy, финишx, финишy, color, #SCREEN[0][0]);
messagebox (k);
CODE:int SCREEN[500][700];
//...............
int k=findcolor(-1, #x[0],#y[0], стартx, стартy, финишx, финишy, color, Красный_меньше_на, Красный_больше_на, Зеленый_меньше_на, Зеленый_больше_на, Синий_меньше_на, Синий_больше_на, #SCREEN[0][0]);
messagebox (k);
|
|
|
|