代码之家  ›  专栏  ›  技术社区  ›  Ryan O'Neill

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

  •  63
  • Ryan O'Neill  · 技术社区  · 15 年前

    我有一个允许用户上传汽车图片的网站,我想安装一个隐私过滤器来检测汽车上的牌照并模糊它们。

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

    注意事项;

    1. 我知道没有什么是完美的,这种类型的图像识别将提供假阳性和阴性。
    2. 我很感激我们可以让用户选择模糊的区域,我们也会这样做,但问题是具体地关于以编程方式查找数据;所以诸如“让人检查每个图像”之类的回答没有帮助。
    3. 这个软件方法在英国被称为“自动车牌识别”,但我不能把它的任何实现看作是库。
    4. 任何语言都很好,尽管.NET是首选语言。
    12 回复  |  直到 6 年前
        1
  •  29
  •   Jivan Miranda    12 年前

    我基于Java ANPR编写了一个C版本,但是我用OpenCV改变了AWT库函数。 你可以在 http://anprmx.codeplex.com

        2
  •  24
  •   Abdul Fatir    8 年前

    编辑 我写了一篇文章 Python script 为此。

    由于你的目标模糊(为了保护隐私),你基本上需要一个 recall 探测器作为第一步。下面介绍如何进行此操作。包含的代码提示将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)  
      

    输入图像如下。

    enter image description here

    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之后的结果图像。

    enter image description here

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

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

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

    所有 MimaReActuple() S以橙色显示,符合我们标准的为绿色。

    enter image description here

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

    enter image description here

    1. 模糊检测到的区域。

    enter image description here

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

        3
  •  12
  •   Derrick Johnson    11 年前

    在Github上有一个新的开放源代码库,它为美国和欧洲板块提供了ANPR。它看起来相当精确,应该完全按照您的需要(识别板块区域)。以下是Github项目: https://github.com/openalpr/openalpr

        4
  •  10
  •   Bruce McLeod    15 年前

    我偶然发现了一个用Java编写的 javaANPR 我也在找一个图书馆。

    我想要一个系统,我可以在一些帆船上用摄像机,所有这些船上都有大的,可识别的数字,并让它识别船只,并在他们经过摄像机时发送一条微博。

        5
  •  8
  •   Mauricio Scheffer    15 年前

    几个月前我在谷歌上搜索过。有 quite a few papers 关于这个主题,但我从未找到任何具体的开源实现。有 a lot of commercial implementations 尽管如此,但它们都没有报价,所以它们可能很贵。

        6
  •  5
  •   Birol Kuyumcu    12 年前

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

    http://opos.codeplex.com/

    开源并用C编写#

        7
  •  3
  •   Ralph Wegner    14 年前

    看一看 Java ANPR . 免费车牌识别…

        8
  •  2
  •   keyoke    14 年前

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

        9
  •  2
  •   codeguru    14 年前

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

        10
  •  2
  •   Somatik    12 年前

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

        11
  •  -1
  •   Matthew    15 年前

    它可能是工作在看字符识别软件,因为有许多库执行相同的事情。我读了一张图片并把它储存起来。Microsoft Office能够读取TIFF文件并返回字母数字

        12
  •  -2
  •   abmv    15 年前

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

    Ans: The CARMEN FreeFlow ANPR Software engine (商业)

    推荐文章