Author Topic: IF_PICTURE_IN и SCREENSHOTEX  (Read 4068 times)

0 Members and 2 Guests are viewing this topic.

FJ

  • Освоившийся
  • **
  • Posts: 59
    • View Profile
IF_PICTURE_IN и SCREENSHOTEX
« on: November 12, 2015, 11:42:44 PM »
Доброго времени суток.
Можете подсказать, как организовать такую штуку.
Допустим у меня скрипт ищет часть картинки(IF_PICTURE_IN ) в базе картинок, не находит и сохраняет(SCREENSHOTEX) часть, где должна располагаться эта картинка в соседнюю папку temp. после переходит к следующей картинке и действие повторяется.
Хотел бы, чтобы скрипт сначала искал в базе, если не находит, то искал в папке темп, если и там не находил, то сохранял картинку.А то приходится перебирать тонны одинаковых картинок, что отнимает относительно много времени :)
Хотелось бы это без привлечения сторонних программ реализовать.
И еще, перебор картинок через IF_PICTURE_IN очень долгий, может есть более быстрый способ? Куда капать?
Вот часть кода например:

Code: [Select]
for ( $rang = 1 , $rang < 10 )
                  GETSCREEN
                  IF_PICTURE_IN ( $Xmin , $Ymin + 300 , $Xmax , $Ymin + 396 , strconcat("screens\temp\rang \", $rang ,".bmp"), -1, 100)
                     if ( $rang = 9)
                        SCREENSHOTEX ( $_return1 - 70 , $_return2 - 5 , $_return1 + 30 , $_return2 + 18, "temp\rang\9_" , 0 )
                        $_return1 $_return2
                        print ("найден ранг, но нет в базе - скрин сделал")
                     else
...
Эти 10 картинок он быстро перебирает, но есть часть кода, которая состоит более чем из 300 картинок... Долго в общем! :)

Натолкните на мысль пожалуйста! :)

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: IF_PICTURE_IN и SCREENSHOTEX
« Reply #1 on: November 13, 2015, 08:43:49 AM »
Наталкиваю. Сменить подход и попытаться сделать по другому.
300 картинок в любом случае будет не быстро искать.

Не весь скрипт, что он делает если не найдёт?
У GETSCREEN можно задать область - ускорение
GETSCREEN не обязательно делать внутри цикла если ничего не меняется на экране в период перебора картинок.
GETSCREEN самая тормознутая команда, тем более по всему экрану.
Вывод в лог тоже стоит оставлять полным только на этапе отладки. Штука тоже сильно замедляющая.

P.S. что за висящие в вакууме $_return1 $_return2   - замедление на парсинге при обработке мусора.
« Last Edit: November 13, 2015, 08:45:55 AM by Vint »


FJ

  • Освоившийся
  • **
  • Posts: 59
    • View Profile
Re: IF_PICTURE_IN и SCREENSHOTEX
« Reply #2 on: November 13, 2015, 01:15:59 PM »
Не весь скрипт, что он делает если не найдёт?
Не понял вопроса

У GETSCREEN можно задать область - ускорение
Круто, не знал. А поиск в этой области как осуществлять лучше 0,0,xmax,ymax ?

Не весь скрипт, что он делает если не найдёт?

GETSCREEN не обязательно делать внутри цикла если ничего не меняется на экране в период перебора картинок.
Да, вчера понял это. Заметно ускорился! :)

Вывод в лог тоже стоит оставлять полным только на этапе отладки. Штука тоже сильно замедляющая.
Вывод у меня только пока отладка, после идет в конце цикла, показывает что нашел.

P.S. что за висящие в вакууме $_return1 $_return2   - замедление на парсинге при обработке мусора.
Тоже убрал :)

А в итоге:
Хотел бы, чтобы скрипт сначала искал в базе, если не находит, то искал в папке темп, если и там не находил, то сохранял картинку.

FJ

  • Освоившийся
  • **
  • Posts: 59
    • View Profile
Re: IF_PICTURE_IN и SCREENSHOTEX
« Reply #3 on: November 13, 2015, 01:24:59 PM »
И еще, раз уж дело пошло.
Почему сегодня например скрины кликер сделал, я их добавил. А завтра он опять говорит, что не может найти картинку, и снова добавляет. в чем подвох?

Flayka

  • Зашел в гости
  • *
  • Posts: 17
  • нуп
    • View Profile
Re: IF_PICTURE_IN и SCREENSHOTEX
« Reply #4 on: November 13, 2015, 01:30:44 PM »
так ты наверно их в перебор не добавляешь?)

FJ

  • Освоившийся
  • **
  • Posts: 59
    • View Profile
Re: IF_PICTURE_IN и SCREENSHOTEX
« Reply #5 on: November 13, 2015, 01:54:42 PM »
Нет, они добавлены.
Самое интересное, что заменяю картинку, которую сделал кликер, и все работает, а через какое-то время снова перестанет, не понимаю что за дела...

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: IF_PICTURE_IN и SCREENSHOTEX
« Reply #6 on: November 13, 2015, 01:55:25 PM »
Ты бы задачу объяснил с примерами изображений и с подробным описанием. Вполне вероятно что ты пытаешься отлавливать то, что отлавливать не нужно. Например,  (здесь хотел написать примеры, но потом замучался в н-ный раз гадать "а что же там имелось ввиду")


FJ

  • Освоившийся
  • **
  • Posts: 59
    • View Profile
Re: IF_PICTURE_IN и SCREENSHOTEX
« Reply #7 on: November 13, 2015, 04:29:09 PM »
Хороше.
У меня выпадает текст на белом фоне такого рода(прикрепил изображение)
Это ранг, он может быть от 1 - 100. В игре выделить это нельзя, выскакивает как картинка.
Если кликер не нашел изображение в папке база, то сохраняю его с помощью SCREENSHOTEX в папку темп(изображение появляется всегда статично, поэтому  координаты знаю).

1) Я хочу чтобы кликер определял это значение.
2) Хочу узнать, как осуществить поиск картинки сначала в папке база, затем в папке темп

Вот вроде и все :)

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: IF_PICTURE_IN и SCREENSHOTEX
« Reply #8 on: November 13, 2015, 06:01:35 PM »
Может использовать скрипт для распознавания цифр, тогда картинок будет всего 11.


В любом случаи надо применять цветокоррекцию 8 уровня чтоб сделать все черно белым
Code: (clickermann) [Select]
COLORMODE(8)
скорее всего при перезагрузках игры шрифт немного по разному рендерится поэтому у тебя уже 300 картинок. Без цветокоррекции и процента совпадения тут никак.

Ну и делать 300 картинок это неверное направление. Бред...

FJ

  • Освоившийся
  • **
  • Posts: 59
    • View Profile
Re: IF_PICTURE_IN и SCREENSHOTEX
« Reply #9 on: November 13, 2015, 06:25:01 PM »
Да не, у меня всего 40 картинок:)
И в принципе работает :)
Про распознавание спасибо, сейчас посмотрю! :)

FJ

  • Освоившийся
  • **
  • Posts: 59
    • View Profile
Re: IF_PICTURE_IN и SCREENSHOTEX
« Reply #10 on: November 14, 2015, 10:45:27 PM »
С колормодом вообще клево стало все! Спасибо! :)
А вот на счет этого можете подсказать?
2) Хочу узнать, как осуществить поиск картинки сначала в папке база, затем в папке темп

FJ

  • Освоившийся
  • **
  • Posts: 59
    • View Profile
Re: IF_PICTURE_IN и SCREENSHOTEX
« Reply #11 on: November 15, 2015, 11:05:59 PM »
Но существует вероятность, что не искать хочется вам, а сравнивать с вновь полученной картинкой? ::)
Надеюсь мы правильно друг друга понимаем, в итоге я не хочу перебирать в ручную сотни одинаковых картинок(перед SCREENSHOTEX проверить, может такая картинка уже есть?).