Автоматизация и боты

 Помощь      Поиск      Пользователи
Сайт Кибор     Программируемый кликер Кибор     Видео обучение     Заказать бот

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

> Описание: Вопрос по возможности ускорения выполнения кода.
1991dima
Отправлено: 21 Июня, 2018 - 12:15:53
Post Id



Пользователь
Прохожий


Покинул форум
Сообщений всего: 6
Дата рег-ции: Апр. 2017  
Репутация: 0




Добрый день, уважаемые господа ботописцы.
Вопрос такой.
Есть поле в игре 3 в ряд. Размер поля - 400*400 пикселей.
поле состоит из 64 "квадратов". Каждый 50*50 пикселей соответственно.
В каждом квадрате естественно есть "фигуры". Всего типов фигур которые и надо собирать 3 в ряд - 8.
Сначала делается скриншот поля в переменную screen[400][400].
Потом перед тем, как сделать ход, программа сканирует поле на предмет каждого типа фишки и записывает числовые значения 0-8 (соответствуют типу фигуры) в массив. Далее я уже работаю с цифрами (ищу ходы и т.д.).
Так вот самое долгое в выполнении самое долгое занимает именно сканирование поля.
***
Выглядит это примерно так, если кому-то нужно:
for (int n=0; n<8; n++)//перебор фишек
{o=findimage(-1, #fishki[n][0][0], 0, #Xf[0], #Yf[0], 0, 0, 378, 378, r1, r1, r1, r1, r1, r1, p1, 1, #screen_game[0][0]);
for (int a=0; a<o; a++)// <8
{
for (int nx=0; nx<8; nx++)
{
for (int ny=0; ny<8; ny++)
{
if (Xk[nx][ny]-(Xf[a]+137)<podgon_screen && (Xf[a]+137)-Xk[nx][ny]<podgon_screen && Yk[nx][ny]-(Yf[a]+87)<podgon_screen && (Yf[a]+87)-Yk[nx][ny]<podgon_screen) //сравнение фишек, не заморачивайся
{
Nk[nx][ny]=n; //записываем фишку типа n в массив который хранит координаты фишек
goto df;
}
}
}
df:;
}
}
***
Получается я беру скрин окна 400*400 потом ищут количество фигур в скрине и записываю координаты в массив. и так для каждой фигуры.
Выполнение чисто сканирования занимает секунд 5 чистого времени, что довольно долго.
Ускорить процесс пробовал заменив поиск фигур на поле, сканированиеv пикселей на местах расположения фигур, но результат почему-то такой же по времени.
Может кто-нибудь подскажет нубу Не понял , какое-то очевидное решение по оптимизации?
p.s. Уменьшить размер экрана к сожалению нет возможности, как и размер скрина, на котором ищутся фишки.
 
 Top
Kibor
Отправлено: 21 Июня, 2018 - 13:18:27
Post Id



Администратор
Эксперт


Просматривает форум
Сообщений всего: 8218
Дата рег-ции: Март 2013  
Откуда: Одесса
Репутация: 357




Подобрать правильные параметры поиска по не полному совпадению.
Подобрать правильные рисунки. Сделать их как можно меньше.
Когда делается рисунок шаблона, следить что бы левый верхний угол рисунка имел по возможности уникальные цвета пикселей.

5 секунд это много и говорит о том что сделано что то не верно.
 
 Top
1991dima
Отправлено: 21 Июня, 2018 - 13:55:34
Post Id



Пользователь
Прохожий


Покинул форум
Сообщений всего: 6
Дата рег-ции: Апр. 2017  
Репутация: 0




 Kibor пишет:
Подобрать правильные параметры поиска по не полному совпадению.
Подобрать правильные рисунки. Сделать их как можно меньше.
Когда делается рисунок шаблона, следить что бы левый верхний угол рисунка имел по возможности уникальные цвета пикселей.

5 секунд это много и говорит о том что сделано что то не верно.


на данный момент изображение каждой фигуры, которую я ищу имеет размер 25*25 пикселей. То есть я 8 раз ищу координаты изображений размером 25*25 в скрине размером 400*400.
Правильно я понимаю, что мне нужно уменьшить размеры изображений, которые я ищу? Если да, то желательно до каких? 5*5?

(Отредактировано автором: 21 Июня, 2018 - 13:55:57)

 
 Top
Kibor
Отправлено: 21 Июня, 2018 - 14:00:35
Post Id



Администратор
Эксперт


Просматривает форум
Сообщений всего: 8218
Дата рег-ции: Март 2013  
Откуда: Одесса
Репутация: 357




Я дал рекомендации.
5 сек это долго.
Ничего более сказать не могу не видя что и как там.
 
 Top
1991dima
Отправлено: 21 Июня, 2018 - 15:44:29
Post Id



Пользователь
Прохожий


Покинул форум
Сообщений всего: 6
Дата рег-ции: Апр. 2017  
Репутация: 0




 Kibor пишет:
Я дал рекомендации.
5 сек это долго.
Ничего более сказать не могу не видя что и как там.

А в теории что будет быстрее, применить функцию findimage на изображение размером 400х400 и так для каждого типа искомых объектов и получить соответственно 64 места их расположения
или самому указать 64 маленьких мест расположения размером 50х50 и в каждом из них применить функцию findimage?
 
 Top
Kibor
Отправлено: 21 Июня, 2018 - 15:54:07
Post Id



Администратор
Эксперт


Просматривает форум
Сообщений всего: 8218
Дата рег-ции: Март 2013  
Откуда: Одесса
Репутация: 357




Так как у вас. Сделать один раз снимок и искать в этом скриншоте
 
 Top
1991dima
Отправлено: 26 Июня, 2018 - 14:36:32
Post Id



Пользователь
Прохожий


Покинул форум
Сообщений всего: 6
Дата рег-ции: Апр. 2017  
Репутация: 0




 Kibor пишет:
Так как у вас. Сделать один раз снимок и искать в этом скриншоте

Спасибо за совет. Действительно, уменьшил размер искомых картинок до 5*5 (пришлось повозиться с настройкой findimage) зато теперь поиск занимает секунды полторы.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 4 (гостей: 4, зарегистрированных: 0)
« Вопросы и решение проблем »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 




Powered by