Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в эту темуОткрыть новую тему
> Распознование чисел
GodoXo
сообщение 9.12.2016, 1:06
Сообщение #1


*

Registred
Сообщений: 2
Регистрация: 9.12.2016
Группа: Пользователи
Наличность: 0
Пользователь №: 18.230
Возраст: 28



Добрый день,

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

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

Если коротко, мне нужно распознать 3 числа, и на основании простейших математических манипуляций следать какое либо действие.

В общем прошу помощи в решении проблемы, заранее благодарен.


Эскизы прикрепленных изображений
Прикрепленное изображение
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 9.12.2016, 1:52
Сообщение #2


**********

Elder
Сообщений: 3.480
Регистрация: 18.8.2014
Группа: Пользователи
Наличность: 26706
Пользователь №: 16.971
Возраст: 29



Скрипт давно писал, но должен работать.
код
Код
set linedelay 0
log mode compact
init_arr %image 0 1 2 3 4 5 6 7 8 9    // имена картинок (0.bmp, 1.bmp и т.д.)
init_arr %bukva 0 1 2 3 4 5 6 7 8 9    // цифра
set $path "C:\image\"                  // путь к картинкам


// всё что ниже лучше не менять, кроме координат в findimage
set #z 0
set #a 0
set $aa
set size(%b)

// поиск картинок
for #i 1 size(%image)
   set #a findimage(0 0 706 543 ($path%image [#i].bmp) %a 2 70 -1 5)
   if #a > 0
      for #k 1 size(%a)
         set #z #z + 1
         init_arr %b (#z) %a[#k 1] %a[#k 2] %bukva[#i]
      end_for
   end_if
end_for

// сортировка картинок
for #k 1 eval(size (%b) - 1)
   set #d 0
   for #i 1 eval(size (%b) - 1)
      set #a #i + 1
      if %b[#i 1] > %b[#a 1]
         set #c %b[#i 1]
         set %b[#i 1] %b [#a 1]
         set %b[#a 1] #c
         set $c1 %b[#i 3]
         set %b[#i 3] %b[#a 3]
         set %b[#a 3] $c1
         set #d 1
      end_if
   end_for
   if #d = 0
      break
   end_if
end_for

// вывод строки в лог
for #j 1 size (%b)
   set $aa $aa%b[#j 3]
end_for
log $aa
End_script

Единственное, придётся искать числа отдельно, т. е. 1045 это один поиск, 806 второй и 135 третий, т. к. сортируются цифры только по координате X.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 9.12.2016, 2:54
Сообщение #3


**********

Elder
Сообщений: 3.480
Регистрация: 18.8.2014
Группа: Пользователи
Наличность: 26706
Пользователь №: 16.971
Возраст: 29



Так вроде должно и по Y сортировать.
код
Код
set linedelay 0
log mode compact
log clear
init_arr %image 0 1 2 3 4 5 6 7 8 9    //имена картинок (0.bmp, 1.bmp и т.д.)
init_arr %bukva 0 1 2 3 4 5 6 7 8 9    // цифра
set $path "C:\image\"                  // путь к картинкам

// всё что ниже лучше не менять, кроме параметров findimage
set #z 0
set size(%b)

// поиск картинок
for #i 1 size(%image)
        set #a findimage(0 0 706 543 ($path%image [#i].bmp) %a 2 70 -1 5)
    if  #a > 0
        for #k 1 size(%a)
            set #z #z + 1
            init_arr %b (#z) %a[#k 1] %a[#k 2] %bukva[#i]
        end_for
    end_if
end_for

sort_array %b 2
// сортировка картинок по X
for #k 1 eval(size (%b) - 1)
    set #d 0
    for #i 1 eval(size (%b) - 1)
        set #a #i + 1
        if  %b[#i 1] > %b[#a 1] and %b[#i 2] = %b[#a 2]
            set #c %b[#i 1]
            set %b[#i 1] %b [#a 1]
            set %b[#a 1] #c
            set $c1 %b[#i 3]
            set %b[#i 3] %b[#a 3]
            set %b[#a 3] $c1
            set #d 1
        end_if
    end_for
    if  #d = 0
        break
    end_if
end_for

// сортировка картинок по Y
for #j 1 size (%b)
    set #n #j + 1
    if  %b [#n 2] = %b [#j 2]
        set $aa $aa%b[#j 3]
    else
      set $aa $aa%b[#j 3]
      log $aa                  // вывод в лог
      set $aa
    end_if
end_for
end_script

Картинки с цифрами должны быть одинаковые по высоте.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
GodoXo
сообщение 9.12.2016, 8:21
Сообщение #4


*

Registred
Сообщений: 2
Регистрация: 9.12.2016
Группа: Пользователи
Наличность: 0
Пользователь №: 18.230
Возраст: 28



Спасибо, как вернусь с командировки обязательно проверю.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения

Ответить в эту темуОткрыть новую тему
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 

- Текстовая версия | Версия для КПК Сейчас: 23.4.2024, 22:36
Designed by Nickostyle