Лучший способ узнать номер, нарисованный пальцем пользователя на экране iPhone - PullRequest
8 голосов
/ 17 ноября 2011

Я планирую позволить пользователю нарисовать форму числа (от 1 до 9) в форме 7-сегментного дисплея. Как лучше всего определить, какое число было нарисовано?

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

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

Пути, которые я подумал об улучшении этого: Нарисуйте форму пути пальца на экране. Если линия пересекает середину сегмента, выделите этот сегмент.

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

Ответы [ 2 ]

6 голосов
/ 22 ноября 2011

Я использовал реализации распознавателя штрихов $ для распознавания нарисованных чисел.

Оба алгоритма связаны с несколькими реализациями Objective-C / iOS.

Распознаватели будут сравнивать входные данные с предопределенными шаблонами на основе различных алгоритмов (подробное объяснение доступно на связанных страницах).Чтобы это работало, вам нужно будет создать свои собственные числовые шаблоны (в основном, просто нарисуйте что-нибудь и позвольте распознавателю преобразовать это в структуру данных, которую вы храните для дальнейшего использования).Затем, при вводе пользователем, сравните с шаблонами, которые вы записали ранее, чтобы найти совпадение.

Для моего приложения было достаточно распознавателя в 1 доллар, где я сначала позволил бы пользователю тренироваться рисовать цифры.Распознаватель $ N способен различать более сложные стокы и может принимать более сложные нарисованные числа.Это то, с чем вам придется экспериментировать.

3 голосов
/ 28 января 2013

Если вы заинтересованы в обнаружении чисел 1-9, проверьте BGNumericGlyphRecognizer . Я потратил несколько месяцев на работу с $ N-multistroke распознавателем, чтобы создать ScribbleMath (математическое приложение, которое позволяет детям рисовать свои ответы на экране) и с открытым исходным кодом основную логику. Оказалось, что распознавателям $ N трудно различать 6 и 9, а также они плохо распознают очень простые буквы, такие как 1 и "-", и я создал логику для лучшей обработки. Она не идеальна, но из коробки вы узнаете больше, чем распознаватель $ N. Наслаждайтесь!

...