source software recognition plate openalpr open license java anpr

java - software - openalpr



LocalizaciĆ³n de JavaAnpr para placas locales. (2)

Estoy trabajando con JavaAnpr para reconocer automáticamente las matrículas. Si bien funciona bien con las placas europeas, no lo hace con mi país. Por ejemplo;

¿Cómo podría editar los archivos de recurso y la sintaxis XML para admitir otros países?


@michel_layyous - Aquí está la documentación del autor. Lea la página 57: http://javaanpr.sourceforge.net/anpr.pdf

syntax.xml es esencialmente un archivo regex.

Use esta página como ejemplo: https://code.google.com/p/android-anpr/source/browse/trunk/res/raw/syntax.xml?r=21

<type name="russia"> <char content="abcehkmoptxy"/> <char content="0123456789"/> <char content="0123456789"/> <char content="0123456789"/> <char content="abcehkmoptxy"/> <char content="abcehkmoptxy"/> <char content="0123456789"/> <char content="0123456789"/> </type>

Este patrón de matrícula ruso es de 8 caracteres. El primer carácter puede ser cualquiera de esas letras. Los siguientes 3 caracteres pueden ser cualquier número de su conjunto respectivo. Los siguientes 2 caracteres pueden ser cualquiera de esas letras de su conjunto respectivo, y los últimos 2 caracteres pueden ser cualquiera de esas letras de su conjunto respectivo.

La siguiente matrícula rusa es igual que la primera matrícula rusa, excepto por una diferencia clave:

<type name="russia2"> <char content="abcehkmoptxy"/> <char content="0123456789"/> <char content="0123456789"/> <char content="0123456789"/> <char content="abcehkmoptxy"/> <char content="abcehkmoptxy"/> <char content="012"/> <char content="0123456789"/> <char content="0123456789"/> </type>

El sexto carácter solo puede ser un 0, 1 o 2.

También encontré un anuncio relevante en esta página: http://www.mp3car.com/software-and-software-development/124529-automatic-number-plate-recognition-anpr-3.html

Encontré una placa muy similar para su país, sin embargo, consta de dos filas. Los dos primeros números están en la fila superior, y hay 5 números en la fila inferior. Parece que su país tiene 7 dígitos para su estilo particular de placa. No sé cómo los puntos influyen en el reconocimiento de su placa, sin embargo, la página 58 de la documentación del autor establece:

La corrección de una placa significa la sustitución de cada carácter no válido por otro. Si el carácter () i p en la posición i th de la placa P no coincide con el patrón seleccionado () `sel P, será reemplazado por el primero válido de () s y. () s y es un vector ordenado de actividades de salida que denota en qué medida el carácter reconocido es similar a un carácter individual del alfabeto. El análisis heurístico de una placa segmentada puede a veces evaluar incorrectamente los elementos que no son caracteres como caracteres. La aceptación de los elementos que no son chara causa que la placa reconocida contendrá caracteres redundantes. Los caracteres redundantes suelen aparecer en los lados de la placa, pero rara vez en el medio. Si el número de placa reconocido es más largo que el patrón de sintaxis más grande, podemos seleccionar el patrón más cercano y eliminar los caracteres redundantes de acuerdo con él.


Echa un vistazo a OpenALPR ( http://www.openalpr.com ). Tiene mejor apoyo en varios países. La biblioteca está escrita en C ++ (a diferencia de Java), pero debería ser fácil de conectar mediante JNI.