如何使用 OpenCV 区分不同的车牌

Posted

技术标签:

【中文标题】如何使用 OpenCV 区分不同的车牌【英文标题】:How to distinguish between different license plates using OpenCV 【发布时间】:2020-02-21 09:24:08 【问题描述】:

目前正在开发许可证检测系统,需要一些有关如何进行的指导。 我可以捕获(通过视频播放)并在名为 OpenALPR 的开源库的帮助下将车牌直接显示到终端,现在的问题是它逐帧捕获,因此它多次捕获同一个车牌。我添加了一个跳帧变量,现在它跳过了我想要的帧数,但问题仍然存在。

此外,如果可能的话,我想区分不同的车牌,但不知道如何解决这个问题,我尝试使用基本的对象检测和检测,但惨遭失败。

下面是程序运行的图像,可以看到它检测到一个车牌并显示它的多个实例,现在的问题是我希望它移动到下一辆车并显示 Plate#1,不幸的是它确实如此不是并继续喂入板#0 程序运行

Program Running

真正帮助显示车牌文本的功能如下,第一行确实完成了所有工作。 OpenALPR 非常强大。

results = alpr.recognize_ndarray(frame)         
    for i, plate in enumerate(results['results']):             
    best_candidate = plate['candidates'][0]             
    print('Plate #: : (:%)'.format(i, 
          best_candidate['plate'].upper(),   
          best_candidate['confidence']))

我想要一些关于如何解决这个问题的指导?这基本上是区分不同的车牌。

【问题讨论】:

【参考方案1】:

这是一个没有通用解决方案的通用问题,因为它高度依赖于上下文。一些想法:

如果是视频源,您可以跟踪盘子的移动,当检测到另一个盘子时,轨道会“跳跃”。假设最大光流速度为 100 px/帧,如果它跳跃超过这个阈值,你可以认为它是一个新的板。

根据您的视频质量和检测器,可能存在虚假跳跃,我会添加卡尔曼滤波器或任何简单的滤波器。

也许在一个盘子出现图像和下一个到达之间存在最短时间间隔。您可以使用时间阈值来触发“换板警报”事件。

【讨论】:

我明白了,问题是我感觉自己好像迷失在信息的海洋中,没有很好的起点来了解如何掌握这一点。我目前正在通读这本书。 Mastering Opencv with Practical Computer Vision projects,第 5 章。使用 SVM 和神经网络进行车牌识别,试图掌握如何去做。从实际的角度来看,您对开始使用它有什么建议吗?对迟到的回复表示歉意。 看看这个网站pyimagesearch.com,并在这个页面pyimagesearch.com/pyimagesearch-gurus中寻找“车牌”。我希望它会有所帮助。

以上是关于如何使用 OpenCV 区分不同的车牌的主要内容,如果未能解决你的问题,请参考以下文章

基于OpenCV 的车牌识别

如何在python中使用opencv复制图像区域?

如何提取车牌中的数字?

使用 OpenCV 进行车牌识别

如何创建特征向量以使用 open cv 识别字符

车牌的Opencv图像分割