Author Topic: поворот картинки на 90 градусов или зеркальное отображение  (Read 2645 times)

0 Members and 1 Guest are viewing this topic.

shatun

  • Освоившийся
  • **
  • Posts: 36
    • View Profile
Есть простая капча в которой  меняются картинки (их 5 шт). Раньше нужно было посчитать каких картинок меньше на ту и кликнуть.
Делал очень примитивно, но работало...
Code: (clickermann) [Select]
WAIT(5)
   // поиск изображения Img.bmp в области 700,400 - 1200,700
   GETSCREEN
   COLORMODE(6)
   scanpicture($var, 700,400, 1200,700, "Img.bmp")
   WAIT(1)
   
   // вывод массива, содержащего результаты поиска
   while (arrsize($var) > 0)
      $y = arrpop($var)
      $x = arrpop($var)
   end_cyc
   
   LOGWRITE ("найдены координаты ",$x,":", $y)
   
   GETSCREEN // Clickermann помещает в свой графический буфер скриншот экрана
   COLORMODE(6) // Применяет к этому скриншоту режим COLORMODE
   SCREENSHOTFIX($x,$y+50, $x+40, $y+90, "1.bmp")  // Сохроняет скриншот 1 картинки
   GETSCREEN
   COLORMODE(6)
   IF_PICTURE_IN ($x+50,$y+50,$x+240,$y+100, "1.bmp", -1, 93) //поиск картинки
      WAITMS(500)
      GETSCREEN // Clickermann помещает в свой графический буфер скриншот экрана
      COLORMODE(6) // Применяет к этому скриншоту режим COLORMODE
      SCREENSHOTFIX($x+45,$y+45, $x+90, $y+90, "2.bmp")
      WAITMS(500)
      GETSCREEN
      COLORMODE(6)
      IF_PICTURE_IN ($x+90,$y+45, $x+240,$y+100, "2.bmp", -1, 93) //поиск картинки
         WAITMS(500)
         GETSCREEN // Clickermann помещает в свой графический буфер скриншот экрана
         COLORMODE(6) // Применяет к этому скриншоту режим COLORMODE
         SCREENSHOTFIX($x+95,$y+45, $x+140,$y+90, "3.bmp")
         WAITMS(500)
         GETSCREEN
         COLORMODE(6)
         IF_PICTURE_IN ($x+140,$y+40,$x+240,$y+100, "3.bmp", -1, 93) //поиск картинки
            WAITMS(500)
            GETSCREEN // Clickermann помещает в свой графический буфер скриншот экрана
            COLORMODE(6) // Применяет к этому скриншоту режим COLORMODE
            SCREENSHOTFIX($x+140,$y+40,$x+190,$y+90, "4.bmp")
            WAITMS(500)
            GETSCREEN
            COLORMODE(6)
            WAITMS(500)
            IF_PICTURE_IN ($x,$y+40, $x+140,$y+90, "4.bmp", -1, 93) //поиск картинки
               GETSCREEN // Clickermann помещает в свой графический буфер скриншот экрана
               COLORMODE(6) // Применяет к этому скриншоту режим COLORMODE
               SCREENSHOTFIX($x+190,$y+40,$x+240,$y+90, "5.bmp")
               WAITMS(500)
               GETSCREEN
               COLORMODE(6)
               IF_PICTURE_IN ($x,$y+40, $x+140,$y+90, "5.bmp", -1, 93) //поиск картинки
                  WAITMS(500)
                  LCLICK($x+110,$y+60)
                  LOGWRITE ("найдено 5")
               END_IF
            ELSE // "ИНАЧЕ"
               LCLICK($x+160,$y+60)
               LOGWRITE ("найдено 4")
            END_IF
         ELSE // "ИНАЧЕ"
            LCLICK($x+115,$y+65)
            LOGWRITE ("найдено 3")
         END_IF
      ELSE // "ИНАЧЕ"
         LCLICK($x+65,$y+65)
         LOGWRITE ("найдено 2")
      END_IF
   ELSE // "ИНАЧЕ"
      LCLICK($x+20,$y+70)
      LOGWRITE ("найдено 1")
   END_IF
Сейчас усложнили задачу:
1.  теперь некоторые картинки повёрнуты на 90, 180, 270 градусов и вот никак не найду какой командой мне их перевернуть.
2. иногда картинки зеркально отображены и тоже могут быть повёрнуты на 90, 180, 270 градусов, тоже не найду какой командой сделать зеркальное отображение картинки перед поиском.
« Last Edit: April 05, 2023, 03:11:54 PM by shatun »

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Нет таких команд.
И не факт что повёрнутая картинка где-то там будет полностью совпадать с повёрнутой правильно. Если это web может влиять размер контейнера. Если картинки подготовлены в jpeg - сжатие.

Покажи, что за картинки хоть. Может есть другой способ чтоб не искать 5 * 4 * 3 = 60 вариантов. Цвета там посчитать основные.
« Last Edit: April 06, 2023, 09:15:33 AM by Vint »


kiril

  • Активный участник
  • ***
  • Posts: 106
    • View Profile
Re: 90 градусов или привычные 40?
« Reply #2 on: April 05, 2023, 10:14:37 PM »
повернуть картинки кликером на 90, 180, 270 градусов и или зазеркалить конечно можно, но имеет-ли смысл из за указанных выше причин? нужно предварительно проверять.

shatun

  • Освоившийся
  • **
  • Posts: 36
    • View Profile
Re: 90 градусов или привычные 40?
« Reply #3 on: April 06, 2023, 11:15:34 AM »
Покажи, что за картинки хоть. Может есть другой способ чтоб не искать 5 * 4 * 3 = 60 вариантов. Цвета там посчитать основные.
в данном случае только чёрные и белые цвета, но идея очень интересная.

пишут - Папка upload заполнена. Попробуйте файл меньшего размера или свяжитесь с администратором.
Файл 11КБ, закинул на postimges

странно, капча вроде простейшая, но на некоторых ресурсах её сейчас устанавливают взамен рекапчи...
« Last Edit: April 06, 2023, 11:20:20 AM by shatun »

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: 90 градусов или привычные 40?
« Reply #4 on: April 06, 2023, 12:14:56 PM »
Файл 11КБ, закинул на postimges

А эта же повёрнутая есть? Только не сам поворачивай.

Просто интересно,  это она так нарисована или отмасштабирована. Похоже, что нарисована, всего 4 цвета. Можно считать все, а можно только самый тёмный.
Непонятно только почему размеры разные и зачем ты при поиске использовал % совпадения 93
« Last Edit: April 06, 2023, 12:53:39 PM by Vint »


shatun

  • Освоившийся
  • **
  • Posts: 36
    • View Profile
Quote
она так нарисована или отмасштабирована
это сохранённые картинки которые сохранялись при  помощи
Code: [Select]
      COLORMODE(6)
      SCREENSHOTFIX($x+45,$y+45, $x+90, $y+90, "2.bmp")
вот полностью кусок скрина капчи (как есть без сжатий)

процент совпадения очень часто ставлю 93-95 ... от настроения, а так они нормально ищутся :)
P.S. если открыть эту картинку на postimages.org  https://i.postimg.cc/d1c44CHJ/1.jpg то видно реальную картинку (без сжатия). Странно почему немного искажается картинка, я её заливал и устанавливал параметр - без сжатия.
« Last Edit: April 06, 2023, 09:05:14 PM by shatun »

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
вот полностью кусок скрина капчи (как есть без сжатий)
P.S. если открыть эту картинку на postimages.org  https://i.postimg.cc/d1c44CHJ/1.jpg то видно реальную картинку (без сжатия). Странно почему немного искажается картинка, я её заливал и устанавливал параметр - без сжатия.
Там jpeg, откуда там без сжатия. Такую значит и залил. Только что попробовал, залил png, всё нормально и ничего не перекодировалось.
Jpeg не подходит для анализа.

процент совпадения очень часто ставлю 93-95 ... от настроения, а так они нормально ищутся :)
Можно ещё под настроение ставить паузы секунд на 30  ;D
Если нормально ищется и так, зачем процент крутить? Он замедляет поиск и чем меньше, тем сильнее.

Дели на 5 зон и считай цвета по зонам. Если картинки не пережимаются и корректно поворачиваются, то значения совпадут. Даже если там не чётко в разумных пределах, ну будешь сравнивать с определённым допуском. Большинство картинок без труда отличишь. Могут попасться близкие пары, но цветов мало, так что тоже отличишь.

В данном случае, думаю всё просто. Вот решал подобным способом капчу http://crapware.aidf.org/forum/index.php?topic=1768.0 вот там было сложно. И полноцветные и фон специальный и размер менялся и могли чуть перекрываться. Скрины в той теме умерли, для понимания вот та капча:



« Last Edit: April 07, 2023, 09:52:05 AM by Vint »


shatun

  • Освоившийся
  • **
  • Posts: 36
    • View Profile
Дели на 5 зон и считай цвета по зонам. Если картинки не пережимаются и корректно поворачиваются, то значения совпадут. Даже если там не чётко в разумных пределах, ну будешь сравнивать с определённым допуском. Большинство картинок без труда отличишь. Могут попасться близкие пары, но цветов мало, так что тоже отличишь.

В данном случае, думаю всё просто.

Ты прав. Неделю назад пришлось вернуться к этой задачке и всё оказалось достаточно просто.
При помощи PXLCOUNT считал сколько цветов в области и далее сравнивал количество.
Code: [Select]
$ColorsPxls_one = PXLCOUNT ($x-120,$y-60, $x-70, $y-10, 4144959)У меня с этой капчей ещё одна засада... подскажите пожалуйста каким образом (если можно готовым куском кода) выяснить сколько картинок на капче? Просто их иногда бывает 5 или 6. А на видео видел, что и 7 картинок в капче может быть. Просто в зависимости от кол-ва картинок я выбираю другие координаты для подсчёта цветов каждой картинки.

shatun

  • Освоившийся
  • **
  • Posts: 36
    • View Profile
Важное дополнение... На разных страницах ширина капчи может меняться.

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
У меня с этой капчей ещё одна засада... подскажите пожалуйста каким образом (если можно готовым куском кода) выяснить сколько картинок на капче? Просто их иногда бывает 5 или 6. А на видео видел, что и 7 картинок в капче может быть.

Так там же есть вертикальные полоски - границы блоков, по ним и определять. Ищешь картинку с вертикальной полосой в области капч и считаешь их количество.


shatun

  • Освоившийся
  • **
  • Posts: 36
    • View Profile
Quote
Так там же есть вертикальные полоски - границы блоков, по ним и определять. Ищешь картинку с вертикальной полосой в области капч и считаешь их количество.
Раньше были. И да, можно было их посчитать. Сейчас их нет и я думаю каким образом посчитать количество пробелов (выделяя между картинками минимально допустимое кол-во белых пикселей) чтобы понять сколько картинок. Только вот эти пробелы между картинками разные т.к. в капче может быть 5, 6 или 7 картинок да и длинна капчи как я заметил может меняться....
« Last Edit: November 08, 2023, 02:37:25 PM by shatun »

shatun

  • Освоившийся
  • **
  • Posts: 36
    • View Profile
У меня уже появилась мысль выделять вертикальную область в капче от заданной координаты - например шириной в 5 пикселей и смотреть есть в этой области пиксели кроме белых. Если есть, значит эта область попадает на картинку и можно считать, что это первая картинка. Дальше двигать правее эту область по координатам  и таким образом посчитать сколько картинок. Только вот как подступиться к реализации пока не хватает моих знаний (((

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Ну так ты просишь код, при этом не даёшь ничего, ни информации по новой версии, ни скринов нужных.
Получается: напишите код по не полному описанию. Оказывается там поменялось. Слава богу, что я не начал писать код и не выкинул время в мусорку.


shatun

  • Освоившийся
  • **
  • Posts: 36
    • View Profile
Vint,
так всё дело в том, что там всё как раньше, но иногда в капче нет разделений в виде вертикальных полосок и у них иногда размер капчи в ширину меняется.
вот пример:


Тут вообще 8 картинок...
P.S. и спасибо за совет по поиску и подсчёту цвета. Прям чётко (безошибочно) работает такой метод.
« Last Edit: November 08, 2023, 04:23:03 PM by shatun »

shatun

  • Освоившийся
  • **
  • Posts: 36
    • View Profile
Когда были полоски я делал вот так:


Code: (clickermann) [Select]
/////////////////////////////////////////////////////////////////////////////
// определяем сколько картинок
WAIT(5)
WAITMS(200)     
GETSCREEN
//COLORMODE(6)
$ColorsPxls_img = PXLCOUNT (495,660, 800, 660, 15790320) // ищем указанные пиксели в области и считаем их
SCREENSHOTFIX(495,660, 800, 660, "проверка2.bmp")  // Сохроняет скриншот
LOGWRITE ("Найдено пикселей: ", $ColorsPxls_img)
$Img_capca = $ColorsPxls_img + 1
LOGWRITE ("Всего картинок: ", $Img_capca)
// определяем сколько картинок - конец
/////////////////////////////////////////////////////////////////////////////

HALT