2011-11-17 20 views
8

Planeo dejar que un usuario dibuje la forma de un número (1 a 9) en la forma de una pantalla de 7 segmentos. ¿Cuál es la mejor manera de detectar qué número se dibujó?La mejor manera de reconocer el número dibujado por el dedo del usuario en la pantalla del iPhone

Sé cómo hacer todo el seguimiento táctil y cosas de UIGestureRecogniser: estoy buscando una buena lógica para hacerlo.

Hasta ahora, tengo: Cuando un toque se mueve de 1 mitad de un segmento a otro, resalte ese seg. Una vez que finalicen los toques, verifique qué segs se han resaltado y decida qué número dibujará.

Formas en las que he pensado en mejorarlo: Dibuje una forma de la trayectoria del dedo en la pantalla. Si la línea se cruza con la mitad de un seg, resalte esa seg.

¿Alguien tiene algún consejo o mejor forma de hacerlo? Estoy abierto a cualquier sugerencia, incluso si eso significa descartar todo mi código y comenzar de cero.

+0

Parecería que tendría que hacer que el usuario entrene primero la aplicación, por lo que dibujaría 0 - 9 un par de veces, descubrirá cómo lo hacen, y luego lo harán donde está tratando de determinar el número . Buena suerte. –

+0

¿Tienes que usar esta técnica de segmento? Esto probablemente sea perfecto para que una red neuronal lo resuelva. – janoliver

+0

Gracias por las sugerencias. Voy a probar la idea de la red neuronal – Craig

Respuesta

6

He utilizado implementaciones de los reconocedores $ stroke para el reconocimiento de números dibujados.

Ambos algoritmos enlazar a varios Objective C-IOS/implementaciones.

Los reconocedores compararán la entrada con patrones predefinidos basados ​​en diferentes algoritmos (explicación detallada disponible en las páginas enlazadas). Para que esto funcione, tendrás que hacer tus propios patrones numéricos (básicamente, dibuja algo y deja que el reconocedor lo convierta en una estructura de datos que almacenas para su uso posterior). Luego, la entrada del usuario se compara con los patrones que grabaste antes para encontrar una coincidencia.

El reconocedor de $ 1 era suficiente para mi aplicación en la que dejaba que el usuario entrenara primero para practicar el dibujo de los números. El reconocedor $ N puede distinguir entre eventos más complejos y podría aceptar números dibujados más complejos. Esto es algo con lo que tendrás que experimentar.

+0

Muchas gracias por esa información. Tristemente, el primer enlace del proyecto obj-c para el reconocedor de $ 1 está roto, pero hay otros que intentaré tan pronto como pueda. – Craig

+0

Probé este hoy: https://github.com/preble/GLGestureRecognizer. Me alegra decir que funciona MARAVILLOSAMENTE. ¡Gracias de nuevo por el fantástico enlace! – Craig

+0

feliz de ser de ayuda –

2

Si está interesado en detectar los números del 1 al 9, consulte BGNumericalGlyphRecognizer. Pasé varios meses trabajando con un reconocedor $ N-multistroke para crear ScribbleMath (una aplicación matemática que les permite a los niños dibujar sus respuestas en la pantalla) y una lógica de núcleo abierto. Resulta que $ N reconocedores tienen dificultades para diferenciar 6 y 9, y también son malos para reconocer letras muy simples como 1 y "-", y creé la lógica para manejarlos mejor. No es perfecto, pero te llevará más lejos que un reconocedor $ N de la caja. ¡Disfrutar!

Cuestiones relacionadas