我正在使用JavaAnpr来自动识别车牌。虽然它适用于欧洲车牌,但不适用于我的国家。例如;
我如何编辑资源文件和语法 XML 以支持其他国家/地区?
@michel_layyous - 这是作者的文档。阅读第 57 页:http: //javaanpr.sourceforge.net/anpr.pdf
syntax.xml 本质上是一个正则表达式文件。
以此页面为例: 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>
这个俄罗斯车牌图案是 8 个字符。第一个字符可以是这些字母中的任何一个。接下来的 3 个字符可以是它们各自集合中的任意数字。接下来的 2 个字符可以是它们各自集合中的任何字母,最后 2 个字符可以是它们各自集合中的任何字母。
下一个俄罗斯车牌就像第一个俄罗斯车牌,除了一个关键区别:
<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>
第 6 个字符只能是 0、1 或 2。
我还在此页面上找到了相关的宣传: http ://www.mp3car.com/software-and-software-development/124529-automatic-number-plate-recognition-anpr-3.html
我为您的国家找到了一个非常相似的车牌,但是它由两行组成。前两个数字在顶行,底行有 5 个数字。看起来您所在的国家/地区有 7 位数的特定样式的盘子。我不知道点是如何识别您的盘子的,但是,作者文档的第 58 页指出:
更正车牌意味着将每个无效字符替换为另一个。如果板 P 的第 i 个位置的字符 ( ) i p 与所选模式 ( ) ` sel P 不匹配,它将被 ( ) s y 中的第一个有效字符替换。( ) s y 是输出活动的排序向量,表示识别的字符与字母表中单个字符的相似程度。分段车牌的启发式分析有时会错误地将非字符元素评估为字符。接受非字符元素会导致识别的车牌包含冗余字符。冗余字符通常出现在印版的两侧,但很少出现在中间。如果识别的车牌号比最长的语法模式长,
查看 OpenALPR ( http://www.openalpr.com )。它在各个国家/地区都有更好的支持。该库是用 C++(而不是 Java)编写的,但使用 JNI 应该很容易连接。