将JavaAnpr本地化以适应当地的车牌号码。

21
我正在使用 JavaAnpr 来自动识别车牌。虽然它可以很好地识别欧洲的车牌,但不能识别我国的车牌,例如:

来自我国的车牌

我该如何编辑资源文件和语法XML以支持其他国家的车牌?

1
你尝试过其他库吗? - Olimpiu POP
你能提供另一张样本图吗?我正在尝试弄清楚。这在某些类型的板子上运行得很好。 - Filipe YaBa Polido
2个回答

7
@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>

第六个字符只能是0、1或2。我在这个页面上也找到了相关的信息:http://www.mp3car.com/software-and-software-development/124529-automatic-number-plate-recognition-anpr-3.html
我找到了一个与您国家非常相似的车牌,但它由两行组成。前两个数字位于上排,下排有5个数字。看起来您国家的特定风格的车牌有7个数字。我不知道点如何影响识别您的车牌,但作者文档的第58页说:
“车牌的纠正意味着用另一个字符替换每个无效的字符。如果该车牌P中第i个位置的字符()ip与选择的模式()selP不匹配,则将其替换为从sy()s​​y中选择的第一个有效值。 sy()s​​y是表示识别字符与字母表中单个字符相似度的输出活动的排序向量。分段号码牌的启发式分析有时会错误地将非字符元素评估为字符。接受非字符元素会导致识别出的车牌包含冗余字符。冗余字符通常出现在板的两侧,但很少出现在中间。如果识别出的车牌号码超过最长的语法模式,我们可以选择最近的模式,并根据它删除冗余字符。”

1

请查看OpenALPR (http://www.openalpr.com),它在各个国家都有更好的支持。该库是用C++编写的(而不是Java),但使用JNI应该很容易连接。


据我所知,这不是免费的,对吧? - Emin Hasanov

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接