Автокликер Clickermann :: Форум

Основной раздел => Общие вопросы => Topic started by: ronny56 on July 23, 2014, 04:58:28 PM

Title: Анализ текста с картинки
Post by: ronny56 on July 23, 2014, 04:58:28 PM
Вообщем понял что моя предыдущая просьба тяжело реализироваемая,по-этому переделал смысл скрипта
Вырезал текст с картинки (http://i062.radikal.ru/1407/58/dd3ba765e5bb.png) он должен сканироваться с такой рамочки (http://cdn.joxi.ru/uploads/prod/2014/07/22/d7c/b9c/3c0f45237cc0ed137e915501c4ca3a9543ea8524.jpg)
Суть такова,курсор заранее установлен в одном и том же месте и не меняется,произведена привязка по окну.Вещи делаются бесконечно,кликеру дается 5 секунд что бы определить где есть "Время активации" а где нету,где нету он выбрасывает.Получается реализовать все кроме анализа самого текста.Мой скрипт
Code: (clickermann) [Select]
waitms(5000)
getscreen

IF_PICTURE_IN (715,165,1017,470, "3.bmp",-1,100)
LCLICK(208,494)
HALT
END_IF
lDown(705,483)
  lUp(683,383)
LCLICK(586,367)


Где я ошибся?
Title: Re: Анализ текста с картинки
Post by: aden on July 23, 2014, 05:14:41 PM
скорее всего он не находит данную картинку изза меняющегося заднего фона
Code: (clickermann) [Select]
colormode(8)
должен помочь
Title: Re: Анализ текста с картинки
Post by: ronny56 on July 23, 2014, 05:24:25 PM
скорее всего он не находит данную картинку изза меняющегося заднего фона
Code: (clickermann) [Select]
colormode(8)
должен помочь

Это заного сделать скрин но уже с колормод 8?
Title: Re: Анализ текста с картинки
Post by: aden on July 23, 2014, 05:28:48 PM
именно
Title: Re: Анализ текста с картинки
Post by: ronny56 on July 23, 2014, 05:37:11 PM
именно
Сделал не помогло,специально ставлю такую бижу что бы было -6,но всеравно ее выкидывает новый сделанный скрин выглядит так (http://s019.radikal.ru/i615/1407/66/6dc15a551bae.png)
Title: Re: Анализ текста с картинки
Post by: aden on July 23, 2014, 05:58:58 PM
процент совпадения поставь 90-95 %
Title: Re: Анализ текста с картинки
Post by: ronny56 on July 23, 2014, 06:07:07 PM
процент совпадения поставь 90-95 %

Отлично,работает.Теперь как сделать так чтобы останавливало только где будет дважды "время активации -6%",склеить их в пеинте?
Title: Re: Анализ текста с картинки
Post by: aden on July 23, 2014, 06:11:10 PM
ну я так понимаю они не обязательно подряд могут быть так что не поможет так что SCANPICTURE тебе в помощь, как пользоваться читай в инструкции
Title: Re: Анализ текста с картинки
Post by: ronny56 on July 23, 2014, 06:22:06 PM
ну я так понимаю они не обязательно подряд могут быть так что не поможет так что SCANPICTURE тебе в помощь, как пользоваться читай в инструкции

если -12,то подряд не будут,но если -18 то будут подряд.Еще вопрос,если находит с -12,или -18 чтобы перемещало в какую то из этих ячеек http://joxi.ru/dNLPU_3JTJDxR6X3qNc написал такой код,но не работает почему то
Code: (clickermann) [Select]
IF_PICTURE_IN (715,165,1017,470, "4.bmp",-1,90)
ldown(709,482)
lup( RND(699,506), RND(966,676) )
END_IF
Title: Re: Анализ текста с картинки
Post by: aden on July 23, 2014, 06:38:36 PM
добавь move между ldown и lup

неважно подряд или нет ищи количество совпадений и через arrsize вычисляй сколько раз выпало
Title: Re: Анализ текста с картинки
Post by: ronny56 on July 23, 2014, 07:17:55 PM
добавь move между ldown и lup

неважно подряд или нет ищи количество совпадений и через arrsize вычисляй сколько раз выпало

move координаты как в lup?
Title: Re: Анализ текста с картинки
Post by: aden on July 23, 2014, 07:54:12 PM
добавь move между ldown и lup

неважно подряд или нет ищи количество совпадений и через arrsize вычисляй сколько раз выпало

move координаты как в lup?
да, вместо того чтобы каждую непонятную мелочь спрашивать здесь откройте instructions.chm и почитайте по интересующей команде описание, там даже с примерами описано как использовать
Title: Re: Анализ текста с картинки
Post by: ronny56 on July 23, 2014, 08:51:38 PM
добавь move между ldown и lup

неважно подряд или нет ищи количество совпадений и через arrsize вычисляй сколько раз выпало

move координаты как в lup?
да, вместо того чтобы каждую непонятную мелочь спрашивать здесь откройте instructions.chm и почитайте по интересующей команде описание, там даже с примерами описано как использовать


MOVE

Синтаксис

MOVE (x, y) - перемещает курсор мышки


Параметры
x, y - координаты, в которые будет помещен курсор

 
Что я тут должен вычитать?move( RND(699,506), RND(966,676) ) пробывал,не получается,в таком случае игнорируется условие IF и выкидывается бижа тоесть
Code: (clickermann) [Select]
lDown(705,483)
  lUp(683,383)
LCLICK(586 ,367)




Код полностью
Code: (clickermann) [Select]
waitms(3000)
getscreen
colormode(8)
IF_PICTURE_IN (715,165,1017,470, "4.bmp",-1,90)
ldown(709,482)
move( RND(699,506), RND(966,676) )
lup( RND(699,506), RND(966,676) )
END_IF
lDown(705,483)
  lUp(683,383)
LCLICK(586 ,367)
Title: Re: Анализ текста с картинки
Post by: aden on July 23, 2014, 09:09:28 PM
вы похоже не осознаете что пишете в коде
Code: (clickermann) [Select]
waitms(3000)
getscreen
colormode(8)
IF_PICTURE_IN (715,165,1017,470, "4.bmp",-1,90)
ldown(709,482)    //зажать кнопку в данных координатах
move( RND(699,506), RND(966,676) )   // переместить мышку в рандомное место в заданном диапазоне
lup( RND(699,506), RND(966,676) )  // отпустить мышку в заново сгенерированном рандомном месте из указанного диапазона
END_IF
lDown(705,483)   
  lUp(683,383)
LCLICK(586 ,367)

что у вас работает не так как вы ожидаете вопрос другой для начала осознайте тот код который написали и поймите как он работает.

глупо просить подсказки по каждой мелочи не пытаясь вникнуть в результат своей работы.
Title: Re: Анализ текста с картинки
Post by: ronny56 on July 23, 2014, 09:18:55 PM
вы похоже не осознаете что пишете в коде
Code: (clickermann) [Select]
waitms(3000)
getscreen
colormode(8)
IF_PICTURE_IN (715,165,1017,470, "4.bmp",-1,90)
ldown(709,482)    //зажать кнопку в данных координатах
move( RND(699,506), RND(966,676) )   // переместить мышку в рандомное место в заданном диапазоне
lup( RND(699,506), RND(966,676) )  // отпустить мышку в заново сгенерированном рандомном месте из указанного диапазона
END_IF
lDown(705,483)   
  lUp(683,383)
LCLICK(586 ,367)

что у вас работает не так как вы ожидаете вопрос другой для начала осознайте тот код который написали и поймите как он работает.

глупо просить подсказки по каждой мелочи не пытаясь вникнуть в результат своей работы.

Расскажу суть чего я хочу.Хочу чтобы когда определяло где есть время активации,перетаскивало эту бижу в другую клетку,(скрин ячеек) я вам скидывал,указанный диапазон и есть все эти ячейки.Я осознаю какая команда что делает.Только сейчас понял что если lup вставить такие же координаты как и в мув,то ничего не получится.И так насколько я верно понял надо вставить в LUP такие же сгенерированы координаты как и в move.Вопрос:это не переменные $return часом?
Title: Re: Анализ текста с картинки
Post by: aden on July 23, 2014, 09:33:11 PM
lup(-1,-1) отпустит там где в данный момент курсор находится
Title: Re: Анализ текста с картинки
Post by: Oraven on July 23, 2014, 09:33:59 PM
Вот решение твоей проблемы, нужно числа генерировать в переменные а уж потом их использовать в нескольких местах.

Code: (clickermann) [Select]
getscreen
colormode(8)
IF_PICTURE_IN (715,165,1017,470, "4.bmp",-1,90)
   LDOWN(709,482)
   WAITMS(50)
   $rx = RND(699,506)
   $ry = RND(966,676)
   MOVE($rx,$ry)
   WAITMS(50)
   LUP($rx,$ry)
   WAITMS(50)
END_IF
Title: Re: Анализ текста с картинки
Post by: ronny56 on July 23, 2014, 09:59:54 PM
Вот решение твоей проблемы, нужно числа генерировать в переменные а уж потом их использовать в нескольких местах.

Code: (clickermann) [Select]
getscreen
colormode(8)
IF_PICTURE_IN (715,165,1017,470, "4.bmp",-1,90)
   LDOWN(709,482)
   WAITMS(50)
   $rx = RND(699,506)
   $ry = RND(966,676)
   MOVE($rx,$ry)
   WAITMS(50)
   LUP($rx,$ry)
   WAITMS(50)
END_IF

перемещает,но не в заданом диапазоне,диапазон задал заного,всеравно,куда попало тыкает
Title: Re: Анализ текста с картинки
Post by: ronny56 on July 23, 2014, 10:01:59 PM

неважно подряд или нет ищи количество совпадений и через arrsize вычисляй сколько раз выпало

можно поподробнее,прочитал эту статью http://crapware.aidf.org/forum/index.php?topic=319.0 мало что понял,аналог If какое преимущество у SCAN перед IF  и как найти это количество совпадений?
Title: Re: Анализ текста с картинки
Post by: aden on July 23, 2014, 10:07:32 PM

неважно подряд или нет ищи количество совпадений и через arrsize вычисляй сколько раз выпало

можно поподробнее,прочитал эту статью http://crapware.aidf.org/forum/index.php?topic=319.0 мало что понял,аналог If какое преимущество у SCAN перед IF  и как найти это количество совпадений?
SCANPICTURE  выводит координаты найденных картинок в массив

соответственно arrsize разделить на 2 выдаст количество найденных картинок
Title: Re: Анализ текста с картинки
Post by: ronny56 on July 23, 2014, 10:16:26 PM

неважно подряд или нет ищи количество совпадений и через arrsize вычисляй сколько раз выпало

можно поподробнее,прочитал эту статью http://crapware.aidf.org/forum/index.php?topic=319.0 мало что понял,аналог If какое преимущество у SCAN перед IF  и как найти это количество совпадений?
SCANPICTURE  выводит координаты найденных картинок в массив

соответственно arrsize разделить на 2 выдаст количество найденных картинок

Я ничего не понял как мне это поможет отсеять ненужные бижи,и оставить именно те где -12 или -18,что мне в коде то писать?
Title: Re: Анализ текста с картинки
Post by: Oraven on July 24, 2014, 02:33:06 AM
перемещает,но не в заданом диапазоне,диапазон задал заного,всеравно,куда попало тыкает

Вот как вписать зону.

Code: (clickermann) [Select]
837,570 - Верхний левый угол
1022,677 - нижний правый


$rx = RND(837,1022)
$ry = RND(570,677)
MOVE($rx,$ry)
Title: Re: Анализ текста с картинки
Post by: ronny56 on July 24, 2014, 12:14:03 PM
перемещает,но не в заданом диапазоне,диапазон задал заного,всеравно,куда попало тыкает

Вот как вписать зону.

Code: (clickermann) [Select]
837,570 - Верхний левый угол
1022,677 - нижний правый


$rx = RND(837,1022)
$ry = RND(570,677)
MOVE($rx,$ry)

А теперь не анализирует текст.Так давайте сначала.Фиг с ним с перетаскиванием.Каждые 7 секунд создается 1 бижа,за это время,курсор заранее установлен уже на бижа. Кликер наводит на нее анализируется текст,где есть Время активации -6% х2,или х3 то есть (http://s56.radikal.ru/i151/1407/bb/2bfcf681dce5.png), то кликер нажимает кнопку отмена,и завершает работу скрипта ,кнопка отмены(lclick(x:y) завершение работы(halt) Важно,что бы проверяло только чтобы было время активации х2,или х3,тобишь -12 и -18,а просто -6 выкидывало.Вот мой скрипт,где ошибки?
Code: (clickermann) [Select]
getscreen
colormode(8)
scanpicture($img, 0,0, $_xmax,$_ymax, "11.bmp",-1,99)
if($img>0)
   while (arrsize($img) > 0)
      $y = arrpop($img)
      $x = arrpop($img)
     lclick(249,522)
     halt
   end_cyc
else
ldown(743,517)
lup(626,466)
Keypress(#Y) 
end_if
Title: Re: Анализ текста с картинки
Post by: Oraven on July 24, 2014, 01:09:33 PM
Так чтоль те надо?

Code: (clickermann) [Select]
getscreen
colormode(8)
scanpicture($img, 0,0, $_xmax,$_ymax, "11.bmp", -1, 99)
if(arrsize($img)>2)
   lclick(249,522) // сработает если найденно 2е и более картинок
   halt
else
   ldown(743,517)
   WAITMS(50)
   lup(626,466)
   WAITMS(50)
   Keypress(#Y)
   WAITMS(50)
   UNDEFINE($img)
end_if
Title: Re: Анализ текста с картинки
Post by: ronny56 on July 24, 2014, 02:02:41 PM
Так чтоль те надо?

Code: (clickermann) [Select]
getscreen
colormode(8)
scanpicture($img, 0,0, $_xmax,$_ymax, "11.bmp", -1, 99)
if(arrsize($img)>2)
   lclick(249,522) // сработает если найденно 2е и более картинок
   halt
else
   ldown(743,517)
   WAITMS(50)
   lup(626,466)
   WAITMS(50)
   Keypress(#Y)
   WAITMS(50)
   UNDEFINE($img)
end_if

Определяет как Время активации -6 любую картинку вообще
Title: Re: Анализ текста с картинки
Post by: Vint on July 24, 2014, 03:00:35 PM
Определяет как Время активации -6 любую картинку вообще
Это уже подбирай картинку и процент совпадения. Ничем по поиску от первого варианта не отличается. Значит и там стабильно не находил.

Вот смотри в колормоде 8 картинка "Время активации -3%" и "Время активации -6%" будет отличаться на 5-10 пикселов.
При твоей картинке 132х19 = 2508 пкс и допуске 1% игнорируются несовпадения в 25 пикселах. Здесь не только "Время активации -3%" прокатит, а и "Время активации -33%".

Уменьшай изображение поиска. Как минимум никогда не захватывай пустые области.
Узнаешь ты надпись в таком виде?  (http://s017.radikal.ru/i444/1407/5f/ec9d823642df.jpg) (http://www.radikal.ru)

А в данном случае лучше сделать вообще так: (http://s56.radikal.ru/i151/1407/e3/aa9a17508f8a.jpg) (http://www.radikal.ru)
Можно точно идентифицировать нужную строку не путая с другими и подбирать процент. Размер картинки 24х10 = 240
Каждый процент = 2 пикселам несовпадения. Можно подобрать довольно точно.
Title: Re: Анализ текста с картинки
Post by: Atas on July 24, 2014, 03:03:58 PM
Избавься от лишних пикселей. Зону поиска тоже надо уменьшить. Точность совпадения пикселей нужно поставить 100%. Лучше сделать несколько картинок для поиска одного и того же изображения, если недостаточно только цветокоррекции. При этом распознавание будет 100%. Достаточно будет искать такую картинку.
Title: Re: Анализ текста с картинки
Post by: aden on July 24, 2014, 03:08:33 PM
Избавься от лишних пикселей. Зону поиска тоже надо уменьшить. Точность совпадения пикселей нужно поставить 100%. Лучше сделать несколько картинок для поиска одного и того же изображения, если недостаточно только цветокоррекции. При этом распознавание будет 100%. Достаточно будет искать такую картинку.

ну это уж слишком "-6%" может и в других надписях встречаться, просто максимально минимизировать картинку сохранив уникальность.

личное имхо: лучше включить погрешность в % соответствия чем кучу поисков городить. При поиске с колормоде8 могут рандомные пиксели иногда менятся изза меняющегося фона.
Title: Re: Анализ текста с картинки
Post by: Atas on July 24, 2014, 03:50:01 PM
Quote
При поиске с колормоде8 могут рандомные пиксели иногда менятся изза меняющегося фона.
Вот я и предлагаю отследить все варианты и на каждый создать картинку, т.е. сделать упор на 100% распознавание. Картинок кстати будет не много. На первых порах скрипт должен делать скриншот и останавливаться, в случае если не смог распознать изображение. Лучше уж пусть бот ничего не сделает, чем например, выкинет из инвентаря дорогой предмет.
Title: Re: Анализ текста с картинки
Post by: aden on July 24, 2014, 03:54:09 PM
вынужден не согласится на процент совпадения выставленный в 95-99 % позволит отсеять возможные изменения пары  рандомных пикселей, а вот выискивание всех возможных вариаций картинки может вылиться в увлекательное приключение поскольку искомая картинка мало того что появляется в рандомном месте так и еще и фон не статический.
Title: Re: Анализ текста с картинки
Post by: Vint on July 24, 2014, 05:11:11 PM
Вот я и предлагаю отследить все варианты и на каждый создать картинку, т.е. сделать упор на 100% распознавание. Картинок кстати будет не много. На первых порах скрипт должен делать скриншот и останавливаться, в случае если не смог распознать изображение. Лучше уж пусть бот ничего не сделает, чем например, выкинет из инвентаря дорогой предмет.
Ошибаешься, картинок может быть много. Практически все пограничные пикселы могут меняться.
Я за %. Всегда делал так в сложных случаях. Особенно при колормоде не 8, а 7 или 6. Иногда приходится снижать колормод из-за малого контраста, часто при 7 уже искомый объект равен фону.
Title: Re: Анализ текста с картинки
Post by: Atas on July 24, 2014, 06:32:14 PM
Quote
вынужден не согласится на процент совпадения выставленный в 95-99 % позволит отсеять возможные изменения пары  рандомных пикселей, а вот выискивание всех возможных вариаций картинки может вылиться в увлекательное приключение поскольку искомая картинка мало того что появляется в рандомном месте так и еще и фон не статический.
Давайте рассмотрим на примере картинки http://s019.radikal.ru/i640/1407/b1/1b13236923c0.png
Попробуем установить процент совпадения 95-99%. Расчет прост.
180 / 100 * 1 = 1.8 (99% совпадения - будет проигнорирован 1 пиксель) - это не вариант
180 / 100 * 2 = 3.6 (98% совпадения - будет проигнорировано 3 пикселя) - не стабильно
...
180 / 100 * 5 = 9 (95% совпадения - будет проигнорировано 9 пикселей) - это перебор
Вот что получится если проигнорировать 5% (95% совпадения) пикселей этой картинки:
http://s015.radikal.ru/i333/1407/fd/94ebc6124f72.png Какая там цифра распознается, не подскажете? :)
Это еще повезло, что картинка такая большая, цифры вполне умещаются на поле 3x5, тогда нельзя проигнорировать даже 1 пиксель (ноль можно спутать с восьмеркой).
Цель разработчиков защиты игры в том и заключается, чтобы бот не мог точно распознать изображение, а путался в этих самых 95-99%.
Зачем нам самим себе процент неудач устанавливать?  :)
Перебор картинок работает очень быстро, тем более что их не так уж и много, мало их будет в этой задаче.
Code: (clickermann) [Select]
$arr[0] = "0.bmp"
$arr[1] = "1.bmp"
$arr[2] = "2.bmp"
$arr[3] = "3.bmp"

FOR($i, $i < 4) // Переменная i - Индекс элемента массива
   GETSCREEN
   IF_PICTURE_IN (x,y, x2,y2, $arr[$i])
      // Действие, если изображение найдено
   END_IF
END_CYC

HALT

IF_PICTURE_IN можно заменить на PXLXOR или PXLCRC.

Для тяжелых случаев, где помимо точности, критична скорость распознавания, можно использовать "двухступенчатое" распознавание изображений, т.е. за два прохода. Первый "грубый" поиск находит саму область искомой картинки, или размытые очертания изображения. В первом проходе уместно и даже обязательно применение % точности. Второй "точный" поиск запустится только по положительному результату первого поиска и будет иметь точность 100%.
А вообще, первым делом, нужно пролазить все настройки игры (все файлы настроек игры), почитать в интернете про настройку данной игры. И окажется, что можно отключить все эффекты прозрачности окон и размытости шрифтов. Или хотя бы немного их уменьшить. Да и клавиши заодно забиндить на нужные действия, чтобы мышку использовать как можно меньше и не палиться. Другими словами Clickermann'у помогать надо всемерно, тогда и он ответит точностью и скоростью. :)


Title: Re: Анализ текста с картинки
Post by: ronny56 on July 25, 2014, 02:51:29 AM
Quote
вынужден не согласится на процент совпадения выставленный в 95-99 % позволит отсеять возможные изменения пары  рандомных пикселей, а вот выискивание всех возможных вариаций картинки может вылиться в увлекательное приключение поскольку искомая картинка мало того что появляется в рандомном месте так и еще и фон не статический.
Давайте рассмотрим на примере картинки http://s019.radikal.ru/i640/1407/b1/1b13236923c0.png
Попробуем установить процент совпадения 95-99%. Расчет прост.
180 / 100 * 1 = 1.8 (99% совпадения - будет проигнорирован 1 пиксель) - это не вариант
180 / 100 * 2 = 3.6 (98% совпадения - будет проигнорировано 3 пикселя) - не стабильно
...
180 / 100 * 5 = 9 (95% совпадения - будет проигнорировано 9 пикселей) - это перебор
Вот что получится если проигнорировать 5% (95% совпадения) пикселей этой картинки:
http://s015.radikal.ru/i333/1407/fd/94ebc6124f72.png Какая там цифра распознается, не подскажете? :)
Это еще повезло, что картинка такая большая, цифры вполне умещаются на поле 3x5, тогда нельзя проигнорировать даже 1 пиксель (ноль можно спутать с восьмеркой).
Цель разработчиков защиты игры в том и заключается, чтобы бот не мог точно распознать изображение, а путался в этих самых 95-99%.
Зачем нам самим себе процент неудач устанавливать?  :)
Перебор картинок работает очень быстро, тем более что их не так уж и много, мало их будет в этой задаче.
Code: (clickermann) [Select]
$arr[0] = "0.bmp"
$arr[1] = "1.bmp"
$arr[2] = "2.bmp"
$arr[3] = "3.bmp"

FOR($i, $i < 4) // Переменная i - Индекс элемента массива
   GETSCREEN
   IF_PICTURE_IN (x,y, x2,y2, $arr[$i])
      // Действие, если изображение найдено
   END_IF
END_CYC

HALT

IF_PICTURE_IN можно заменить на PXLXOR или PXLCRC.

Для тяжелых случаев, где помимо точности, критична скорость распознавания, можно использовать "двухступенчатое" распознавание изображений, т.е. за два прохода. Первый "грубый" поиск находит саму область искомой картинки, или размытые очертания изображения. В первом проходе уместно и даже обязательно применение % точности. Второй "точный" поиск запустится только по положительному результату первого поиска и будет иметь точность 100%.
А вообще, первым делом, нужно пролазить все настройки игры (все файлы настроек игры), почитать в интернете про настройку данной игры. И окажется, что можно отключить все эффекты прозрачности окон и размытости шрифтов. Или хотя бы немного их уменьшить. Да и клавиши заодно забиндить на нужные действия, чтобы мышку использовать как можно меньше и не палиться. Другими словами Clickermann'у помогать надо всемерно, тогда и он ответит точностью и скоростью. :)

можно последний абзац в виде кода,я всю голову сломал уже себе как это сделать
код выше,я так понял будет оставлять с -6,а мне надо -6х2,х3 , а это можно сделать только с сканипикчур


Насчет других сообщений,-6% там может быть только у активации,так что "время активации" в изображении не имеет значения.
Title: Re: Анализ текста с картинки
Post by: Atas on July 25, 2014, 11:32:09 AM
Можно написать примерно такой сценарий с использованием функции IF_PICTURE_IN().
[spoiler]
Code: (clickermann) [Select]
WAITMS(500)

LOGCLEAR

$entry = 0 // Количество найденных изображений

//-------------------------------- Предварительное сканирование

GETSCREEN
COLORMODE(8)

IF_PICTURE_IN (0,0, $_xmax,$_ymax, "Картинка.bmp", -1, 90)
   $entry_1_X = $_return1 // Сохраняем координаты для следующих операций
   $entry_1_y = $_return2
   LOGWRITE ("Первое совпадение найдено")
   LOGWRITE( STRCONCAT("x=", $entry_1_X) ) // Вывод в лог информации для отладки
   LOGWRITE( STRCONCAT("y=", $entry_1_y) )
   LOGWRITE (" ")
   INC($entry) // Счетчик найденных изображений увеличивается на единицу
   //
   // Координата X (горизонтальное смещение) для левого верхнего угла области поиска остается неизменной
   // Область поиска становится меньше и смещается вниз на высоту искомого изображения (10 пикселей)
   IF_PICTURE_IN ($_return1,$_return2+10, $_xmax,$_ymax, "Картинка.bmp", -1, 90)
      $entry_2_X = $_return1
      $entry_2_y = $_return2
      LOGWRITE ("Второе совпадение найдено")
      LOGWRITE( STRCONCAT("x=", $entry_2_X) )
      LOGWRITE( STRCONCAT("y=", $entry_2_y) )
      LOGWRITE (" ")
      INC($entry)
      // В этом месте (если достаточно двух совпадений) можно перейти к следующему действию сценария
      // и не терять время на поиск третьего совпадения.
      // Например оператором GOTO(label) :)
      //
      IF_PICTURE_IN ($_return1,$_return2+10, $_xmax,$_ymax, "Картинка.bmp", -1, 90)
         $entry_3_X = $_return1
         $entry_3_y = $_return2
         LOGWRITE ("Третье совпадение найдено")
         LOGWRITE( STRCONCAT("x=", $entry_3_X) )
         LOGWRITE( STRCONCAT("y=", $entry_3_y) )
         LOGWRITE (" ")
         INC($entry)
      ELSE
         LOGWRITE ("Третье совпадение не найдено")
      END_IF
      //
   ELSE
      LOGWRITE ("Второе совпадение не найдено")
   END_IF
   //
ELSE
   LOGWRITE ("Первое совпадение не найдено")
END_IF

LOGWRITE (" ")
LOGWRITE ("Всего найдено совпадений: ", $entry)

//-------------------------------- Окончательная обработка

SWITCH($entry) // Действия в зависимости от количества найденых изображений
CASE(1)
   // случай 1
CASE(2)
   // Для примера, здесь может быть код для проверки точности найденных изображений
   // ...
   //   $arr[0] = "0.bmp"
   //   $arr[1] = "1.bmp"
   //   $arr[2] = "2.bmp"
   //   $arr[3] = "3.bmp"
   //   FOR($i, $i < 4) // Переменная i - Индекс элемента массива
   //      GETSCREEN
   //      IF_PICTURE_IN (x,y, x2,y2, $arr[$i])
   //         // Действие
   //      END_IF
   //   END_CYC
   // ...
CASE(3)
   // случай 3
DEFAULT
   // случай по умолчанию
END_SWITCH


HALT
[/spoiler]
Картинка и скрипт для теста во вложении.
Title: Re: Анализ текста с картинки
Post by: ronny56 on July 25, 2014, 11:54:31 AM
Можно написать примерно такой сценарий с использованием функции IF_PICTURE_IN().
[spoiler]
Code: (clickermann) [Select]
WAITMS(500)

LOGCLEAR

$entry = 0 // Количество найденных изображений

//-------------------------------- Предварительное сканирование

GETSCREEN
COLORMODE(8)

IF_PICTURE_IN (0,0, $_xmax,$_ymax, "Картинка.bmp", -1, 90)
   $entry_1_X = $_return1 // Сохраняем координаты для следующих операций
   $entry_1_y = $_return2
   LOGWRITE ("Первое совпадение найдено")
   LOGWRITE( STRCONCAT("x=", $entry_1_X) ) // Вывод в лог информации для отладки
   LOGWRITE( STRCONCAT("y=", $entry_1_y) )
   LOGWRITE (" ")
   INC($entry) // Счетчик найденных изображений увеличивается на единицу
   //
   // Координата X (горизонтальное смещение) для левого верхнего угла области поиска остается неизменной
   // Область поиска становится меньше и смещается вниз на высоту искомого изображения (10 пикселей)
   IF_PICTURE_IN ($_return1,$_return2+10, $_xmax,$_ymax, "Картинка.bmp", -1, 90)
      $entry_2_X = $_return1
      $entry_2_y = $_return2
      LOGWRITE ("Второе совпадение найдено")
      LOGWRITE( STRCONCAT("x=", $entry_2_X) )
      LOGWRITE( STRCONCAT("y=", $entry_2_y) )
      LOGWRITE (" ")
      INC($entry)
      // В этом месте (если достаточно двух совпадений) можно перейти к следующему действию сценария
      // и не терять время на поиск третьего совпадения.
      // Например оператором GOTO(label) :)
      //
      IF_PICTURE_IN ($_return1,$_return2+10, $_xmax,$_ymax, "Картинка.bmp", -1, 90)
         $entry_3_X = $_return1
         $entry_3_y = $_return2
         LOGWRITE ("Третье совпадение найдено")
         LOGWRITE( STRCONCAT("x=", $entry_3_X) )
         LOGWRITE( STRCONCAT("y=", $entry_3_y) )
         LOGWRITE (" ")
         INC($entry)
      ELSE
         LOGWRITE ("Третье совпадение не найдено")
      END_IF
      //
   ELSE
      LOGWRITE ("Второе совпадение не найдено")
   END_IF
   //
ELSE
   LOGWRITE ("Первое совпадение не найдено")
END_IF

LOGWRITE (" ")
LOGWRITE ("Всего найдено совпадений: ", $entry)

//-------------------------------- Окончательная обработка

SWITCH($entry) // Действия в зависимости от количества найденых изображений
CASE(1)
   // случай 1
CASE(2)
   // Для примера, здесь может быть код для проверки точности найденных изображений
   // ...
   //   $arr[0] = "0.bmp"
   //   $arr[1] = "1.bmp"
   //   $arr[2] = "2.bmp"
   //   $arr[3] = "3.bmp"
   //   FOR($i, $i < 4) // Переменная i - Индекс элемента массива
   //      GETSCREEN
   //      IF_PICTURE_IN (x,y, x2,y2, $arr[$i])
   //         // Действие
   //      END_IF
   //   END_CYC
   // ...
CASE(3)
   // случай 3
DEFAULT
   // случай по умолчанию
END_SWITCH


HALT
[/spoiler]
Картинка и скрипт для теста во вложении.

Теперь разберем по порядку
Code: (clickermann) [Select]
CASE(1)
   // случай 1

это то,что будет делать кликер если найдет 1 совпадение?
 случай 2,это если 2 подряд,и случай по умолчанию это если не найдет верно?

Еще,случай 1 это -6?,случай 2 -12,случай 3 -18 я верно понял?

Title: Re: Анализ текста с картинки
Post by: Atas on July 25, 2014, 12:08:32 PM
Quote
это то,что будет делать кликер если найдет 1 совпадение?
Ну уж я незнаю, что там у тебя по сценарию, если обнаружено одно совпадение изображения.  :)
Я бы сделал повторную проверку, чтобы исключить ошибку при 90% распознавании. Но возможно и 90% будет достаточно точно.
Quote
случай 2,это если 2 подряд,и случай по умолчанию это если не найдет верно?
Еще,случай 1 это -6?,случай 2 -12,случай 3 -18 я верно понял?
Да, всё так получается.
Кстати, неплохо бы делать SCREENSHOT в случае по умолчанию, чтобы отловить редко встречающиеся варианты изображения и порезать их на картинки.  :)

А SWITCH() я вставил для примера и чтобы не загромождать секцию "Предварительное сканирование", где вложенные друг в друга IF_PICTURE_IN(). Если сценарий небольшой, то можно обойтись и без SWITCH().