Кибор » Кибор - Интегрированная среда разработки ботов » О программе Кибор » Версия 2.05 Доработка поиска изображений по неполному совпадению

Страниц (1): [1]
 

1. Kibor - 09 Августа, 2013 - 08:26:21 - перейти к сообщению
Доработана функция findimage.
А конкретнее ее расширенный вариант для поиска по неполному совпадению.
Добавлен еще один параметр:
 Цитата:
findimage(1, #Image_0[0][0], 0, #PosX_0[0], #PosY_0[0], 0, 0, 1366, 768, Красный_меньше_на, Красный_больше_на, Зеленый_меньше_на, Зеленый_больше_на, Синий_меньше_на, Синий_больше_на, Процент_совпадений_достаточный_для_идентификации, флаг_не_искать_в_области_где_найдено, -1);


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

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

Процент_совпадений_достаточный_для_идентификации - процент от общего количества пикселей участвующих в поиске достаточный для того что бы изображение считалось совпавшим. 100 - необходимо что бы все изображение совпало. 20 - достаточно совпадения одной пятой части изображения. Применять для поиска изображений которые могут частично быть перекрыты или часть цвета пикселей может выйти за пределы колебаний описанных вышеприведенными параметрами.

флаг_не_искать_в_области_где_найдено - если 1 больше не искать в областях на экране по размеру искомого рисунка где найден уже рисунок.

Объяснение:
При поиске изображений к примеру разной яркости или имеющие различные незначительные расхождения можно использовать или разброс цветов или/и процент совпадения пикселей. Применение таких погрешностей может привести к нахождению более одного совпадения практически там где в наличие только один рисунок.

К примеру как на рисунке может быть найдено два и более совпадения (синяя и красные рамки)

Установив параметр флаг_не_искать_в_области_где_найдено в 1 можно запретить поиск с областях где уже нашли одно совпадение (область перекрытая синей и красной рамкой сразу).



Пример использования:
Скачать этот рисунок пешки:http://kibor-bot.com/files/peshka.rar
Рапаковать на диск С. Рисунок должен быть в C:\peshka\peshka.bmp
Скопировать скрипт в Кибор:
CODE:
int Image_0[27][48];
int color, xe, ye;
sleep(1000);
getdisplay(color, xe, ye);
loadimage (#Image_0[0][0], "C:\peshka\peshka.bmp");

int PosX_0[512];int PosY_0[512];

int k=findimage(-1, #Image_0[0][0], 0, #PosX_0[0], #PosY_0[0], 0, 0, xe, ye, 50, 50, 50, 50, 50, 50, 90, 1, -1);

int n=0;
j:if (n<k)
{
mousemove(PosX_0[n]+imagewidth(#Image_0[0][0])/2, PosY_0[n]+imageheight(#Image_0[0][0])/2);
sleep(500);
n++;
goto j;
}


messagebox(k);


И протестировать на этом изображение. Тут все пешки имеют небольшое различие и короткая функция их не найдет. В тесте попробуйте установить предпоследний параметр в 0. На одну пешку будет несколько найденных изображений:

Powered by ExBB FM 1.0 Final