【发布时间】:2013-03-13 20:44:56
【问题描述】:
我正在使用JavaAnpr 来自动识别车牌。虽然它适用于欧洲车牌,但不适用于我的国家。例如;
如何编辑资源文件和语法 XML 以支持其他国家/地区?
【问题讨论】:
-
您是否也尝试过其他库?
-
你能提供另一个示例图像吗?我试图弄清楚。这里的某些盘子可以正常工作。
我正在使用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 在我 th 板的位置 磷 与所选模式不匹配 ( ) ` 选择 磷 , 它会 被第一个有效的替换 ( ) s 是的 . ( ) s 是的 是输出活动的排序向量,表示 识别出的字符与 字母表中的单个字符。 分段板的启发式分析有时可以 es 错误地评估非字符 元素作为字符。接受非角色 cter 元素导致公认的 盘子将包含多余的字符。多余的 字符通常出现在 盘子,但很少在中间。 如果识别的车牌号长于 l 最大的语法模式,我们可以选择 最近的模式,并删除多余的字符 根据它。
【讨论】:
查看 OpenALPR (http://www.openalpr.com)。它在各个国家/地区都有更好的支持。该库是用 C++(而不是 Java)编写的,但使用 JNI 应该很容易连接。
【讨论】: