本文概述
OpenALPR是一个用C ++编写的开源自动车牌识别库, 具有C#, Java, Node.js, Go和Python的绑定。图书馆分析图像和视频流以识别车牌。输出是在处理后的图像中识别的任何车牌字符的文本表示。但是, 出于对本文的兴趣, 我们仅使用CLI工具, 它将使与库的交互更加容易, 而无需知道使用此工具需要使用什么编程语言。 OpenALPR包含一个命令行实用程序, 只需键入” alpr [图像文件路径]”就足以开始识别车牌图像!
在本文中, 我们将向你介绍如何在Windows环境中使用此CLI工具轻松识别车牌。
1.下载最新的Open ALPR版本
第一步, 你需要Windows Open ALPR的可执行文件(二进制文件)。幸运的是, 你无需构建它们, 因为你可以在此处从Github的项目的Releases页面轻松下载它们。根据你的体系结构(x86或x64)下载zip后, 将其内容解压缩到某个目录中, 例如, 因为我们将可执行文件的路径添加为Windows中的环境变量, 因此我们只需键入alpr而不是整个可执行文件的路径, 我们将其解压缩到C:\ Program Files \ openalpr_64目录中。
在文件夹中, 你将找到alpr.exe文件, 这是我们在本教程中将使用的CLI实用程序, 因此现在你可以定义可执行文件在Windows PATH中的目录(请参阅本文以了解如何编辑和设置环境变量)或使用绝对路径运行命令, 例如:
"C:\\Program Files\\openalpr_64\\alpr.exe" "C:\\Program Files\\openalpr_64\\demo.jpg"
但是, 如果在路径中注册目录, 该命令将更易于编写:
alpr "C:\\Program Files\\openalpr_64\\demo.jpg"
拥有二进制文件后, 请继续下一步以学习如何使用它。有关ALPR的更多信息, 请访问Github上的官方存储库。
2.从CLI使用
现在有了二进制文件, 你可以切换到可执行文件所在的目录, 在我们的例子中是:
cd C:\Program Files\openalpr_64
然后, 只需运行命令alpr作为第一个参数, 提供要扫描图像的绝对/相对路径:
alpr ./demo.jpg
就是这样, alpr将开始处理给定的图像并在控制台中打印结果:
指定板区
如你所知, 世界各地有不同种类的车牌, 其长度和分布也不同, 这意味着在某些情况下, alpr需要一些帮助来正确识别标识。这就是为什么你可以指定alpr用来正确识别车牌标识的区域代码的原因, 例如, 如果你尝试识别另一个地区样式的车牌(默认分配为US的欧洲车牌), 则会找到”找不到牌照。”为了避免这种情况, 请在CLI中显示一条消息, 以了解板的区域, 使用-c或–country标志指定值(默认为我们), 以指定代码:
REM An european vehicle
alpr image.jpg --c eu
REM An american vehicle
alpr image.jpg --c us
请参见以下示例:
注意
尽管世界上每个国家都没有代码, 但是你需要指定代码。通常, 它几乎适用于带有us和eu代码的任何板块, 但是其他有效值包括:us, eu, au, auwide, gb, kr, mx, sg。例如, 在文章的图片中, 我们使用的是哥伦比亚的车辆, 但是美国代码在识别时遵循了类似的模式。
生成输出为JSON
如果你愿意从你的权限中解析应用程序生成的输出, 例如以某种编程语言(如PHP, Node.js, Python等)编写的应用程序, 则可以以通用可读格式(如JSON)检索信息, 只需添加命令的–json标志:
alpr image.jpg --json
带有输出而不是原始文本的CLI工具, 是具有以下结构的JSON结构化对象:
{
"version": 2, "data_type": "alpr_results", "epoch_time": 1546207403000, "img_width": 768, "img_height": 1024, "processing_time_ms": 33.806999, "regions_of_interest": [], "results": [
{
"plate": "KKV939", "confidence": 89.048828, "matches_template": 0, "plate_index": 0, "region": "", "region_confidence": 0, "processing_time_ms": 10.102, "requested_topn": 10, "coordinates": [
{
"x": 305, "y": 535
}, {
"x": 481, "y": 533
}, {
"x": 484, "y": 613
}, {
"x": 308, "y": 616
}
], "candidates": [
{
"plate": "KKV939", "confidence": 89.048828, "matches_template": 0
}, {
"plate": "KKV9S9", "confidence": 80.908226, "matches_template": 0
}, {
"plate": "KKV99", "confidence": 78.569084, "matches_template": 0
}, {
"plate": "KXV939", "confidence": 75.373528, "matches_template": 0
}, {
"plate": "KV939", "confidence": 74.683296, "matches_template": 0
}, {
"plate": "KXV9S9", "confidence": 67.232918, "matches_template": 0
}, {
"plate": "KV9S9", "confidence": 66.542694, "matches_template": 0
}, {
"plate": "KXV99", "confidence": 64.893784, "matches_template": 0
}, {
"plate": "KV99", "confidence": 64.203545, "matches_template": 0
}
]
}
]
}
始终欢迎对OpenALPR库进行改进。因此, 请查看OpenALPR设计说明并开始使用。代码贡献不是唯一的帮助方法。你是否拥有大型车牌图像库?如果是这样, 请将你的数据上传到位于upload.openalpr.com上的匿名FTP。你是否有时间在输入图像中”标记”印版图像或以其他方式提供帮助?请在论坛上发布便条, 让大家知道。
编码愉快!
评论前必须登录!
注册