Кибор » Кибор - Интегрированная среда разработки ботов » О программе Кибор » Версия 2.09 Сравнение цвета пикселя по приблизительному цвету. Поиск пикселей определенного цвета.

Страниц (5): [1] 2 3 4 5 »
 

1. Kibor - 24 Августа, 2013 - 15:19:55 - перейти к сообщению
Функция scanpixel сравнивает введенный цвет с цветом пикселя в веденных координатах ориентируясь на разбежности в цветах RGB.

Синтаксис:
scanpixel(КоординатаX, КоординатаY, цвет_в_int, Красный_меньше_на, Красный_больше_на, Зеленый_меньше_на, Зеленый_больше_на, Синий_меньше_на, Синий_больше_на, указатель_на _окно)

Возвращает 1 если введенный цвет уложился в диапазн. 0 - не уложился.

Подобрать оптимальные цвета и их количество с учетом разбежности цвета можно с помощью этого инструмента Подбор Цвета Кибор.

Так же возможно сравнивать цвет пикселя загруженного ранее изображения или полученного скриншота в двухмерный массив int
CODE:
int SCREEN[500][700];
//...............
int k=scanpixel(200, 125, 35436455, 15, 15, 15, 15, 15, 15, #SCREEN[0][0]);
messagebox (k);


Пояснение:
Каждый цвет состоит из трех основных цветов - Красный(R), Зеленый(G), Синий(B). (R, G, B). Каждый из этих трех цветов обозначается числом от 0 до 255. К примеру цвет (0, 0, 0) будет черный, а (255, 255, 255) белым. (255, 0, 0) красным, а (255, 50, 70) красным с примесью зеленого и синего.

Обозначение параметров:
Красный_меньше_на - тут указываем число НА которое красный компонент может быть меньше того что находится в поиске.
Красный_больше_на - тут указываем число НА которое красный компонент может быть больше того что находится в поиске.
Зеленый_меньше_на, Зеленый_больше_на, Синий_меньше_на, Синий_больше_на аналогично.

Указатель на окно может принимать -1. Координаты в этом случае экранные. Иначе координаты оконные относительно этого указателя...

..............................................................................................




findcolor - найдет все координаты всех пикселей указанного цвета.

Синтаксис:
findcolor(-1, #x[0],#y[0], стартx, стартy, финишx, финишy, color, w);

Первый параметр - количество максимальное искомых пикселей. Если -1 - искать все сколько найдет.
Второй и третий - указатель на массивы int приемники координат.
Четвертый - седьмой - Начало, конец зоны поиска.
Восьмой - цвет поиска
девятый - указатель на окно. Если -1 - по всему экрану.
Если есть указатель на окно - возвращаемые координаты оконные.

findcolor возвращает количество найденых пикселей
Или -1 если массив приемника меньше по X
-2 размер массива приемника меньше по Y

Так же findcolor может искать с разбежностью цвета.
Синтаксис:
findcolor(-1, #x[0],#y[0], стартx, стартy, финишx, финишy, color, Красный_меньше_на, Красный_больше_на, Зеленый_меньше_на, Зеленый_больше_на, Синий_меньше_на, Синий_больше_на, w);


Так же возможно искать цвет пикселя загруженного ранее изображения или полученного скриншота в двухмерный массив 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);
2. Dantes3000 - 14 Марта, 2017 - 16:40:20 - перейти к сообщению
if(scanpixel(619, 352, 0, 0, 0, 0, 0, 0, 0, -1)==1) goto h;

beep(1000, 200);
beep(1000, 200);
pause(100000);
h:beep(1000, 200);

я ж правильно написал? На рабочем столе черный фон, кибор показывает цвет 0. Не видит его.
(Добавление)
int r=1;

if(scanpixel(1, 1, 0, r, r, r, r, r, r, -1)==1) goto h;

beep(1000, 200);
beep(1000, 200);
pause(100000);
h:beep(1000, 200);

а вот так вот видит. Почему?
3. Kibor - 14 Марта, 2017 - 17:00:58 - перейти к сообщению
пофиксил
4. Dantes3000 - 28 Мая, 2017 - 08:44:46 - перейти к сообщению
мне кажется или scanpixel иногда сбоит? Есть простенькая функция сканирования хп в варспе...иногда срабатывает просто так и я уверен, что ничего не перекрывает полоску хп.
5. Kibor - 28 Мая, 2017 - 14:04:59 - перейти к сообщению
Ну если сомневаетесь про сбои, то напишите простой скрипт сканирования пикселя пустого блокнота. и тестируйте в течение долгого времени. и выведите сообщение при сбое
6. Dantes3000 - 29 Мая, 2017 - 06:15:55 - перейти к сообщению
А из-за чего может выбивать скрипт, когда он проработал 5-7 часов?
7. Kibor - 29 Мая, 2017 - 06:19:52 - перейти к сообщению
Я не знаю. если бы знал и это была бы ошибка кибора - устранил бы.
8. Dantes3000 - 29 Мая, 2017 - 06:33:47 - перейти к сообщению
Может такое быть, что постепенно выделяется всё больше оперативной памяти и в один момент скрипт просто вырубается? И как с этим бороться
9. Kibor - 29 Мая, 2017 - 07:05:53 - перейти к сообщению
Он не должен этого делать.
Посмотрите в диспетчере.

Или выделяется? Тогда надо найти место которое выделяет.
(Добавление)
CODE:
win w=window ("Безымянный — Блокнот", "Notepad", -1);
loop()
{
scanpixel(100, 100, 0, 10, 10, 10, 10, 10, 10, w);
scanpixel(100, 100, 0, 10, 10, 10, 10, 10, 10, -1)
}


не выделяет..
10. Dantes3000 - 29 Мая, 2017 - 07:28:15 - перейти к сообщению
Извините, что ввёл в заблуждение...я не имел ввиду функцию scanpixel, а именно свой скрипт. Я не знаю из-за чего он может выбивать. Можете глянуть?
Скрытый текст:
Для просмотра Вам необходимо авторизоваться и оставить не менее 150 сообщений

Powered by ExBB FM 1.0 Final