72

我有一个允许用户上传汽车图像的网站,我想设置一个隐私过滤器来检测车辆上的牌照并对其进行模糊处理。

模糊不是问题,但是否有库或组件(首选开源)可以帮助在照片中找到许可证?

注意事项;

  1. 我知道没有什么是完美的,这种类型的图像识别会提供误报和误报。
  2. 我很感激我们可以要求用户选择要模糊的区域,我们也会这样做,但问题是关于以编程方式查找该数据;因此,诸如“让一个人检查每张图片”之类的答案没有帮助。
  3. 这种软件方法在英国被称为“自动车牌识别”,但我看不到它作为库的任何实现。
  4. 尽管首选.Net,但任何语言都很棒。
4

12 回答 12

35

编辑:我为此编写了一个Python 脚本

由于您的目标模糊(为了隐私保护),您基本上需要一个高召回率检测器作为第一步。以下是如何去做。包含的代码提示将 OpenCV 与 Python 结合使用。

  1. 转换为灰度。
  2. 应用高斯模糊。

    img = cv2.imread('input.jpg',1)
    img_gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
    img_gray = cv2.GaussianBlur(img_gray, (5,5), 0)  
    

让输入图像如下。

在此处输入图像描述

  1. 应用 Sobel 滤波器来检测垂直边缘。
  2. 使用严格阈值或 OTSU 的二值化对结果图像进行阈值化。

    cv2.Sobel(image, -1, 1, 0)
    cv2.threshold() 
    
  3. 使用合适的结构元素应用形态闭合操作。(我使用 16x4 作为结构元素)

    se = cv2.getStructuringElement(cv2.MORPH_RECT,(16,4))
    cv2.morphologyEx(image, cv2.MORPH_CLOSE, se)  
    

步骤 5 后的结果图像。

在此处输入图像描述

  1. 查找此图像的外部轮廓。

    cv2.findContours(image, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_NONE) 
    
  2. 对于每个轮廓,找到minAreaRect()它的边界。

  3. 根据纵横比、最小和最大面积以及与水平线的角度选择矩形。(我使用 2.2 <= 纵横比 <= 8、500 <= 面积 <=15000 和角度 <= 45 度)

所有minAreaRect()s 都以橙色显示,满足我们标准的 s 以绿色显示。

在此处输入图像描述

  1. 这一步之后可能会出现误报,要过滤它,请使用边缘密度。边缘密度定义为矩形中的白色像素数/总像素数。设置边缘密度的阈值。(我用的是 0.5)

在此处输入图像描述

  1. 模糊检测到的区域。

在此处输入图像描述

您可以应用您认为适合的其他过滤器来提高召回率和精度。也可以使用 HOG+SVM 训练检测以提高精度。

于 2016-05-30T10:35:09.203 回答
33

我编写了一个基于 JAVA ANPR 的 C# 版本,但我用 OpenCV 更改了 awt 库函数。您可以在http://anprmx.codeplex.com查看它

于 2012-11-07T15:21:32.620 回答
15

GitHub 上有一个新的开源库,可以为美国和欧洲车牌执行 ANPR。它看起来非常准确,它应该完全满足您的需求(识别板块区域)。这是 GitHub 项目: https ://github.com/openalpr/openalpr

于 2014-01-09T05:17:19.003 回答
10

我遇到了这个用 java javaANPR编写的,我也在寻找 ac# 库。

我想要一个系统,我可以将摄像机对准一些帆船,所有这些帆船上都有大的、可识别的数字,并让它识别船只并在它们驶过摄像机时发送推文。

于 2009-08-10T10:05:03.130 回答
8

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

于 2009-06-11T14:49:38.827 回答
5

试试这个简单的自动车牌识别系统

http://opos.codeplex.com/

开源并用 C# 编写

于 2012-03-30T19:38:31.940 回答
3

看看Java ANPR。免费车牌识别...

于 2010-08-23T06:32:08.383 回答
2

是的,我在http://jocr.sourceforge.net/使用 gocr,它是一个命令行应用程序,您可以从应用程序中执行它。我在我的几个应用程序中使用它。

于 2010-05-19T09:32:00.413 回答
2

高性能 ANPR 库 - http://www.dtksoft.com/dtkanpr.php。这是商业的,但他们提供试用密钥。

于 2010-09-23T10:19:19.220 回答
2

http://licenseplate.sourceforge.net Python(我没有测试过)

于 2012-03-30T16:05:28.460 回答
-1

看看字符识别软件可能会起作用,因为那里有许多库可以执行相同的操作。我读取图像并存储它。Micrsoft office 能够读取 tiff 文件并返回字母数字

于 2009-12-03T13:33:22.730 回答
-2

模糊不是问题,但是否有库或组件(首选开源)可以帮助在照片中找到许可证?

Ans: CARMEN FreeFlow ANPR 软件引擎(商业)

于 2009-06-11T14:27:51.577 回答