针对本地车牌本地化 JavaAnpr

2022-09-02 04:45:50

我正在与JavaAnpr合作自动识别车牌。虽然它与欧洲车牌配合得很好,但对我的国家却不然。例如;

License plate from my country

如何编辑追索权文件和语法 XML 以支持其他国家/地区?


答案 1

@michel_layyous - 这是作者的文档。阅读第57页:http://javaanpr.sourceforge.net/anpr.pdf

语法.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 是输出活动的排序向量,表示识别字符与字母表中单个字符的相似程度。对分段板块的启发式分析可能会错误地将非字符元素评估为字符。接受非 chara cter 元素会导致识别的板块包含冗余字符。冗余字符通常出现在板块的侧面,但很少出现在中间。如果识别出的板号比 l ongest 语法模式长,我们可以选择最接近的模式,并根据其删除冗余字符。


答案 2

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


推荐