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

 
Ответить в эту темуОткрыть новую тему
> Алгоритм распознания чисел (позиционирование или поиск координат цифр в числах)
Automaton
сообщение 30.12.2019, 21:20
Сообщение #1


**

Neophyte
Сообщений: 47
Регистрация: 18.12.2019
Группа: Пользователи
Наличность: 0
Пользователь №: 19.472
Возраст: 27



В закрепе есть тема "Поиск числа с помощью Findimage" с готовым решением, которое у меня не работало и сам алгоритм я не понял, да и на мой вопрос в той теме не ответили, поэтому создаю свою тему, с целью разобраться.

Мой собственный алгоритм, увы оказался не особо жизнеспособным, ввиду того что дистанция между цифрами может иногда отличаться. Я сделал так - по заданной начальной координате распознается первая цифра и исходя из того, что это за цифра, к координате прибавляется величина ширины найденной цифры и расстояние между цифрами, в результате должна была получается координата следующей цифры. Но не всегда получилась корректно, потому что оказалось иногда расстояние между цифрами может отличаться в зависимости от того, какую комбинацию они образуют, или еще по каким то иным причинам, так что координаты последующих цифр сбиваются в моем алгоритме.

Прошу помощи с идеями, возможно алгоритм распознания чисел (поиска координат цифр при распознании) делается как то иначе и проще?
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 31.12.2019, 0:30
Сообщение #2


**********

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



Суть примерно такая: ищем все числа поочереди, т. е. ищем 0, потом 1, потом 2 и т. д., при этом записываем найденные числа и их координаты в массив. Потом сортируем массив по координате X.

Для примера, ищем число 215.
Так как числа ищем по порядку, 0, 1, 2 и т. д., то после поиска всех чисел будет массив примерно с таким содержимым:
Код
arr[1 1] = 1    arr[1 2] = 10   // 1 - это цифра, 10 это координата X (естественно будет другой, это для примера)  
arr[2 1] = 2    arr[2 2] = 3    // 2 - это цифра, 3 это координата X
arr[3 1] = 5    arr[3 2] = 20   // 5 - это цифра, 20 это координата X

Так как числа искали по порядку, то получится число 125, вместо 215. Поэтому сортируем массив по второму столбцу по возрастанию. В итоге получим:
Код
arr[1 1] = 2    arr[1 2] = 3   
arr[2 1] = 1    arr[2 2] = 10  
arr[3 1] = 5    arr[3 2] = 20

Теперь просто собрать первые элементы массива в одну строку получится 215.
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Automaton
сообщение 2.1.2020, 18:01
Сообщение #3


**

Neophyte
Сообщений: 47
Регистрация: 18.12.2019
Группа: Пользователи
Наличность: 0
Пользователь №: 19.472
Возраст: 27



Цитата
<%ResultArray> - результирующий массив, в который записываются координаты изображения. Координатами изображения считается пиксель левого верхнего угла изображения. Если найдено несколько изображений, то координаты всех найденных изображений. Каждая строка массива хранится данные по отдельному найденному изображению: в первой колонке- координата X, во второй колонке- координата Y.

Почему то командой FindImage у меня не находится больше чем 1 совпадение с изображением, в заданной области. Хотя определенно должно быть несколько совпадений. Помню что если по отдельности задавал область для каждой цифры, то в ней они находились исправно. Как только решил находить несколько совпадений - так уже не получается. Не могу понять, почему так происходит.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 2.1.2020, 20:45
Сообщение #4


**********

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



Цитата
Почему то командой FindImage у меня не находится больше чем 1 совпадение с изображением

По умолчанию ищется 1 картинка и поиск останавливается.
Цитата
set #b FindImage (10 100 30 150 (d:\myImages\wolf.bmp) %arr 2 80 20 5)

Искать максимум 20 картинок и остановить поиск.
Цитата
set #b FindImage (10 100 30 150 (d:\myImages\wolf.bmp) %arr 2 80 -1 5)

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

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

 

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