几个月前,我已经对此进行了一些搜索。关于此主题的论文很多 ,但我从未找到任何具体的开源实现。虽然有很多商业实现 ,但是它们都没有报价,因此它们可能非常昂贵。

如何从图像中识别车辆牌照/车牌(ANPR)? [关闭]

共 10 个回答
高赞
时间
活跃
0

0

编辑 :我为此编写了一个Python脚本 。
由于您的目标越来越模糊(为了保护隐私),因此第一步基本上需要一个高召回率的检测器。这是执行此操作的方法。随附的代码提示将OpenCV与Python结合使用。
- 转换为灰度。
应用高斯模糊。
img = cv2.imread('input.jpg',1) img_gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) img_gray = cv2.GaussianBlur(img_gray, (5,5), 0)
让输入图像如下。
- 应用Sobel滤镜以检测垂直边缘。
使用严格阈值或OTSU的二值化对结果图像进行阈值处理。
cv2.Sobel(image, -1, 1, 0) cv2.threshold()
使用合适的结构元素进行形态学闭合操作。 (我使用16x4作为结构元素)
se = cv2.getStructuringElement(cv2.MORPH_RECT,(16,4)) cv2.morphologyEx(image, cv2.MORPH_CLOSE, se)
步骤5之后的结果图像。
查找此图像的外部轮廓。
cv2.findContours(image, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_NONE)
对于每个轮廓,找到限制它的
minAreaRect()
。- 根据长宽比,最小和最大面积以及与水平线的角度选择矩形。 (我使用2.2 <=长宽比<= 8,500 <=面积<= 15000,角度<= 45度)
所有minAreaRect()
均以橙色显示,满足我们条件的一个以绿色显示。
- 在执行此步骤后,可能会出现误报,要对其进行过滤,请使用边缘密度。边缘密度定义为白色像素数/矩形中的像素总数 。设置边缘密度的阈值。 (我用0.5)
- 模糊检测到的区域。
您可以应用您认为合适的其他过滤器来提高召回率和精度。还可以使用HOG + SVM训练检测以提高精度。
0
0

GitHub上有一个新的开源库,可对美国和欧洲的板块进行ANPR。它看起来非常准确,并且应该完全满足您的需要(识别印版区域)。这是GitHub项目: https : //github.com/openalpr/openalpr
新手导航
- 社区规范
- 提出问题
- 进行投票
- 个人资料
- 优化问题
- 回答问题
0
我有一个允许用户上传汽车图像的网站,我想放置一个隐私过滤器以检测车辆上的车牌并使它们模糊。
模糊不是问题,但是是否有一个库或组件(首选开放源代码)可以帮助在照片中查找许可证?
注意事项;