Кибор » Кибор - Интегрированная среда разработки ботов » Вопросы и решение проблем » Определение скорости поиска объекта на экране

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

1. Budni - 12 Января, 2019 - 07:30:08 - перейти к сообщению
Хотелось бы увеличить скорость поиска моба и появились вопросы:
1.Как быстрее искать по файнд колор или картинки?
2. Можно ли по файнд колор добавлять цвета через пробел когда моб находится в разных положениях? Т.е. есть спрайт анимация моба 56 кадров. И под каждую анимацию подбирать цвет. Насколько сильно это увеличит точность/время поиска моба.

Нажмите для увеличения


3. Можно ли в файнд колор добавить цвета всех мобов? Или лучше делать файнд колор для каждого моба отдельно?
4. Собственно вытекает вопрос как можно программно замерить скорость и точность поиска моба?
2. Kibor - 12 Января, 2019 - 07:44:13 - перейти к сообщению
Не надо на каждую анимацию делать свои цвета. Они одинаковые.
В этом и прикол функции что не зависит от формы объекта.
Просто укажите разбежность в цвете.

На каждого моба свою функцию надо.
3. Budni - 12 Января, 2019 - 07:51:21 - перейти к сообщению
 Kibor пишет:
Не надо на каждую анимацию делать свои цвета. Они одинаковые.
В этом и прикол функции что на зависит от формы объекта.
Просто укажите разбежность в цвете.

На каждого моба свою функцию надо.

А замерить как то можно? Просто хотелось бы увеличить точность и скорость поиска
4. Dantes3000 - 12 Января, 2019 - 08:13:27 - перейти к сообщению
Budni , посмотри внимательно на волосы. Они почти на всех кадрах одинаковы. Можно вообще обойтись findimage
5. Zireael - 12 Января, 2019 - 08:29:56 - перейти к сообщению
CODE:
int r=10; // разбежность
int color[5]={3616870, 12632319, 2885772, 8421504, 4613827}; // цвета
int kol[5]={20, 20, 20, 20, 20}; // количество

int x[100], y[100]; // координаты
sleep(500);
int colors, xw, yw;
getdisplay(colors, xw, yw); // размеры экрана

int time=gettime();
int k=findheapcolor(sizearray(x), #color[0], #kol[0], sizearray(color), 4, #x[0], #y[0], 60, 60, 120, 120, 0, 0, xw, yw, r, r, r, r, r, r, -1);
time=gettime()-time;

textbkcolor (255, 65280);
for(int i=0; i<k; i++)
{
textout(i, x[i], y[i] , format(i), 0);
mousemove(x[i], y[i]);
sleep(100);
}
messagebox("Затрачено времени: "+format(time)+" "+format(k)+" объектов нашли");

Если мобов много сделать скрин и искать на скрине.
 Цитата:
Можно вообще обойтись findimage

Если точность не 100% это тот ещё тормоз. Тем более искать несколько картинок.
У heap только один минус, для каждого моба свои массивы с данными, что не позволяет искать в цикле.
6. Dantes3000 - 12 Января, 2019 - 09:27:32 - перейти к сообщению
 Zireael пишет:
Если точность не 100% это тот ещё тормоз



Нажмите для увеличения


так там 100% можно делать. видно же, что волосы одинаковые. Даже 10-15 пикселей хватит
7. Budni - 12 Января, 2019 - 10:10:29 - перейти к сообщению
 Dantes3000 пишет:
 Zireael пишет:
Если точность не 100% это тот ещё тормоз



Нажмите для увеличения


так там 100% можно делать. видно же, что волосы одинаковые. Даже 10-15 пикселей хватит

Это в данном случае, я в принципе хочу проверить все способы и протестировать на скорость. Так как в каждом случае по разному.

Zireael , То что надо! Спасибо)
8. Budni - 29 Января, 2019 - 13:30:10 - перейти к сообщению
Zireael , Потребовалось замерить скорость нахождения 1 пикселя, пробовал переделать код, не получается, в чем ошибка?
 Цитата:

int r=10; // разбежность
int color[0]=2366701; // цвета
int kol[0]=1; // количество

int x[100], y[100]; // координаты
sleep(500);
int colors, xw, yw;
getdisplay(colors, xw, yw); // размеры экрана

int time=gettime();
int k=findheapcolor(sizearray(x), #color[0], #kol[0], sizearray(color), 1, #x[0], #y[0], 60, 60, 120, 120, 0, 0, xw, yw, r, r, r, r, r, r, -1);
time=gettime()-time;

textbkcolor (255, 65280);
for(int i=0; i<k; i++)
{
textout(i, x[i], y[i] , format(i), 0);
mousemove(x[i], y[i]);
sleep(100);
}
messagebox("Затрачено времени: "+format(time)+" "+format(k)+" объектов нашли"Подмигивание;
9. Zireael - 29 Января, 2019 - 13:41:21 - перейти к сообщению
 Цитата:
int color[0]=2366701; // цвет
int kol[0]=1; // количество

Массивы размером 0, минимум должны быть 1.
 Цитата:
int color[0]=2366701; // цвет

Так нельзя присваивать значение.
CODE:
int color[1]; // объявили массив
color[0]=2366701; // присвоили значение

Или:
CODE:
int color[1]={2366701}; // объявили и присвоили
10. Budni - 29 Января, 2019 - 14:37:13 - перейти к сообщению
 Zireael пишет:
 Цитата:
int color[0]=2366701; // цвет
int kol[0]=1; // количество

Массивы размером 0, минимум должны быть 1.
 Цитата:
int color[0]=2366701; // цвет

Так нельзя присваивать значение.
CODE:
int color[1]; // объявили массив
color[0]=2366701; // присвоили значение

Или:
CODE:
int color[1]={2366701}; // объявили и присвоили


Спасибо что помогаете, такие нелепые трудности из за того, что только в виз редакторе всё делаю (
Ещё вопрос как задать поиск в определенных координатах? Этих: x=374, y=278, x=432, y=337

Powered by ExBB FM 1.0 Final