Автор Тема: Анализ текста в окне  (Прочитано 72532 раз)

0 Пользователей и 1 Гость просматривают эту тему.

doushy

  • Зашел в гости
  • *
  • Сообщений: 15
    • Просмотр профиля
Re: Анализ текста в окне
« Ответ #165 : Май 07, 2022, 03:55:35 am »
очень много времени прошло, но надеюсь ещё остались кто поможет.

у меня только такой вариант работает. И проблема именно в том, что когда у меня чисто например 30543, то он показывает 3. если 29000, покажет 29, а на числа 23456 - всё нормально, то есть на 0, он не работает, вернее он умножает на 0 и порядок  пропускается получается...
Код: Clickermann
  1. #name "Распознавание чисел"
  2. // Author: Vint
  3. // Version: 1.1 (30.01.2013)
  4. // Результат возвращается в $res если не найдено $res=-1
  5. // Только целые числа. Максимум 10 разрядов. Расположение цифр равномерное.
  6. // Вариант скрипта с последовательным перебором разрядов
  7. // Хотел обойтись без текстовых файлов, только переменные
  8.  
  9.  
  10. //====== переменные которые задаются 1 раз если всего один шрифт ====
  11. //если в скрипте будет искаться несколько наборов шрифтов, то задавать каждый раз при вызове
  12. $sdvig=10 // сдвиг, чуть меньше чем ширина 1 цифры с отступом
  13. $pref="textures\digitt_" // префикс имён файлов с цифрами
  14.  
  15.  
  16. //====== переменные которые задаются при вызове поиска ====
  17. //если место поиска всего одно, задавать только один раз
  18. $field_x1=497 // поле под число, координата X1
  19. $field_y1=1008 // поле под число, координата y1
  20. $field_x2=615 // поле под число, координата X2
  21. $field_y2=1035 // поле под число, координата y2
  22.  
  23.  
  24. //====== внутренние переменные  ====
  25. $razr_max=0 // максимальная разрядность числа
  26. $xmin=5000
  27. $res=-1 // очищаем результат
  28. $i=0                 // очищаем результат
  29.  
  30.  
  31.  
  32.  
  33. //================== начало ====================================================
  34. FOR ($obhod, $obhod<10) // очищаем результат
  35.   GOSUB(sdvig_razryada)
  36. END_CYC
  37.  
  38. GETSCREEN($field_x1,$field_y1,$field_x2,$field_y2)
  39.  
  40. COLORMODE(7)
  41.  
  42. SCREENSHOT
  43.  
  44. FOR ($i, $i<10) // ищем самую левую цифру
  45.   IF_PICTURE_IN ($field_x1,$field_y1,$field_x2,$field_y2, STRCONCAT($pref,$i,".bmp"),-1,80)
  46. //LOGWRITE (STRCONCAT($pref,$i,".bmp"))
  47.      IF($_return1<$xmin)
  48.         $xmin=$_return1
  49.         INC($razr_max)
  50.         $res1=$i
  51.         IF($res1=10) // учитываем что 10-я картинка это 0
  52.            $res1=0
  53.  
  54.  
  55.         END_IF
  56.      END_IF
  57.   END_IF
  58. END_CYC
  59. IF($xmin=5000)
  60.   LOGWRITE ("число не найдено")
  61.   GOTO(endfindnumber)
  62. END_IF
  63.  
  64. $field_x1=$xmin+$sdvig
  65. $perebor=1
  66. WHILE($perebor>0)
  67.   $razr_temp=$razr_max
  68.   FOR ($i,$i<11)
  69.      IF_PICTURE_IN ($field_x1,$field_y1,$field_x1+INT($sdvig*1.3),$field_y2, STRCONCAT($pref,$i,".bmp"),-1,90)
  70.         $field_x1=$_return1+$sdvig
  71.         IF($i<11)
  72.            INC($razr_max)
  73.            GOSUB(sdvig_razryada)
  74.            IF($res1=10) // учитываем что 10-я картинка это 0
  75.               $res1=1
  76.            END_IF
  77.  
  78.         END_IF
  79.         IF($i=11) // проверка если нашли маркер конца ...11.bmp, то конец
  80.            $perebor=0
  81.         END_IF
  82.         $i=11              // выходим из цикла
  83.      END_IF
  84.   END_CYC
  85.   IF(($razr_temp=$razr_max) | ($razr_max=10)) // проверка если не нашли или уже 10 разрядов, то конец
  86.      $perebor=0
  87.   END_IF
  88. END_CYC
  89.  
  90. // подсчитываем
  91. $res=$res1+$res2*10+$res3*100+$res4*1000+$res5*10000+$res6*100000+$res7*1000000+$res8*10000000+$res9*100000000+$res10*1000000000
  92. LOGWRITE ("res1:  ",$res1)
  93. LOGWRITE ("res2:  ",$res2)
  94. LOGWRITE ("res3:  ",$res3)
  95. LOGWRITE ("res4:  ",$res4)
  96. LOGWRITE ("res5:  ",$res5)
  97. LOGWRITE ("res6:  ",$res6)
  98. LOGWRITE ("res7:  ",$res7)
  99. LOGWRITE ("res8:  ",$res8)
  100. LOGWRITE ("res9:  ",$res9)
  101. LOGWRITE ("res10:  ",$res10)
  102.  
  103.  
  104. LOGWRITE (STRCONCAT($res1,$res2,$res3,$res4,$res5,$res6,$res7,$res8,$res9,$res10,))
  105.  
  106.  
  107.  
  108. endfindnumber:
  109.  
  110. LOGWRITE ("Найдено число:  ",$res)
  111. HINTPOPUP("Найдено число:  ",$res)
  112. HALT
  113.  
  114.  
  115. //==============================================================================
  116. SUB(sdvig_razryada)
  117.   $res10=$res9
  118.   $res9=$res8
  119.   $res8=$res7
  120.   $res7=$res6
  121.   $res6=$res5
  122.   $res5=$res4
  123.   $res4=$res3
  124.   $res3=$res2
  125.   $res2=$res1
  126.   $res1=$i
  127. END_SUB
  128. //==============================================================================

Иван_Васильевич

  • Освоившийся
  • **
  • Сообщений: 68
    • Просмотр профиля

 Испанский Стыд!
 Зачем плодить сущности и мучать старинные версии скрипта?
 Для вас, уважаемый автор новые версии выложил давным-давно, а вы // Version: 1.1 (30.01.2013)
 вместо Распознавание чисел 1.5.cms, с маниакальным упорством юзаете. :o
« Последнее редактирование: Май 07, 2022, 07:30:33 am от Иван_Васильевич »

doushy

  • Зашел в гости
  • *
  • Сообщений: 15
    • Просмотр профиля
Re: Анализ текста в окне
« Ответ #167 : Май 07, 2022, 12:30:17 pm »

 Испанский Стыд!
 Зачем плодить сущности и мучать старинные версии скрипта?
 Для вас, уважаемый автор новые версии выложил давным-давно, а вы // Version: 1.1 (30.01.2013)
 вместо Распознавание чисел 1.5.cms, с маниакальным упорством юзаете. :o

я бы с радостью, но другие версии у меня не работают, я не понимаю почему...
у меня вообще не ищет
« Последнее редактирование: Май 07, 2022, 01:09:22 pm от doushy »

Иван_Васильевич

  • Освоившийся
  • **
  • Сообщений: 68
    • Просмотр профиля
Re: Анализ текста в окне
« Ответ #168 : Май 07, 2022, 03:23:05 pm »

 Испанский Стыд!
 Зачем плодить сущности и мучать старинные версии скрипта?
 Для вас, уважаемый автор новые версии выложил давным-давно, а вы // Version: 1.1 (30.01.2013)
 вместо Распознавание чисел 1.5.cms, с маниакальным упорством юзаете. :o

я бы с радостью, но другие версии у меня не работают, я не понимаю почему...
у меня вообще не ищет
настройки скрипта, удобны и понятны во всех версиях, проверьте правильность и полноту их заполнения своими данными.
 в вашем случае, я бы на вот это обратил внимание
$sdvig=10                  // сдвиг, чуть меньше чем ширина 1 цифры с отступом
$pref="textures\digitt_"               // префикс имён файлов с цифрами
 если не находит картинки, но не ругается на их отсутствие, то сдвиг подбирайте исходя из размеров шрифта.
 можете образцы картинок выложить и скриншот для проверки их находимости.
 вероятно ноль в вашем случае находится там где его нет.
 IF_PICTURE_IN ($field_x1,$field_y1,$field_x2,$field_y2, STRCONCAT($pref,$i,".bmp"),-1,80)
  % совпадения, всего для одной цифры это очень низкое значение.
 и переходите на последнюю версию, её большинство пользователей успешно использует, да и описание  в теме перечитайте,.
 Можно картинки цифр  повторно сохранить, увеличить оба варианта и поискать в них разницу, чтоб процент совпадения увеличить.  Или с эмулятора  ваши картинки будут или перекодируете в процессе сохранения. 8)
 нужно смотреть. :o

doushy

  • Зашел в гости
  • *
  • Сообщений: 15
    • Просмотр профиля
Re: Анализ текста в окне
« Ответ #169 : Май 07, 2022, 03:33:51 pm »
Я сейчас на новой версии пытаюсь, но у меня вообще не ищется...хотя на старой версии всё работает.
0.8 мне хватает. я сразу под игру пишу.
и опять же повторюсь, работает на старой версии, соответственно картинки рабочие, 0.8 - рабочий
« Последнее редактирование: Май 07, 2022, 03:35:28 pm от doushy »