vehicle_license_plate_recognition

车牌识别(基于模板匹配)

一、车牌识别的步骤

一般车牌识别分为4步:图像获取车牌定位车牌字符分割车牌字符识别

1.Candy边缘检测

Canny的步骤如下:

1.对输入图像进行高斯平滑,降低错误率。
2.计算梯度幅度和方向来估计每一点处的边缘强度与方向。
3.根据梯度方向,对梯度幅值进行非极大值抑制。本质上是对Sobel、Prewitt等算子结果的进一步细化。
4.用双阈值处理和连接边缘。

实例如下

import cv2img = cv2.imread('car.jpg', flags=cv2.IMREAD_GRAYSCALE)
GBlur = cv2.GaussianBlur(img, (3, 3), 0)
canny = cv2.Canny(GBlur, 50, 150)
cv2.imshow('canny', canny)
cv2.waitKey(0)
cv2.destroyAllWindows()

2.膨胀腐蚀处理
#encoding:utf-8
import cv2
#将图片转为灰度图像
img = cv2.imread('car.jpg', cv2.COLOR_RGB2GRAY)
#将原图做个备份
sourceImage = img.copy()
#高斯模糊滤波器对图像进行模糊处理
img = cv2.GaussianBlur(img, (3, 3), 0)
#canny边缘检测
img = cv2.Canny(img, 500, 200, 3)
cv2.imshow('Canny', img)
#指定核大小,如果效果不佳,可以试着将核调大
kernelX = cv2.getStructuringElement(cv2.MORPH_RECT, (29, 1))
kernelY = cv2.getStructuringElement(cv2.MORPH_RECT, (1, 19))
#对图像进行膨胀腐蚀处理
img = cv2.dilate(img, kernelX, anchor=(-1, -1), iterations=2)
img = cv2.erode(img, kernelX, anchor=(-1, -1), iterations=4)
img = cv2.dilate(img, kernelX, anchor=(-1, -1), iterations=2)
img = cv2.erode(img, kernelY, anchor=(-1, -1), iterations=1)
img = cv2.dilate(img, kernelY, anchor=(-1, -1), iterations=2)
#再对图像进行模糊处理
img = cv2.medianBlur(img, 15)
img = cv2.medianBlur(img, 15)
cv2.imshow('dilate&erode', img)
cv2.waitKey(0)
cv2.destroyAllWindows()

3.按特定形状特征排除干扰
#encoding:utf-8
import cv2
#将图片转为灰度图像
img = cv2.imread('car.jpg', cv2.COLOR_RGB2GRAY)
#将原图做个备份
sourceImage = img.copy()
#高斯模糊滤波器对图像进行模糊处理
img = cv2.GaussianBlur(img, (3, 3), 0)
#canny边缘检测
img = cv2.Canny(img, 500, 200, 3)
cv2.imshow('Canny', img)
#指定核大小,如果效果不佳,可以试着将核调大
kernelX = cv2.getStructuringElement(cv2.MORPH_RECT, (29, 1))
kernelY = cv2.getStructuringElement(cv2.MORPH_RECT, (1, 19))
#对图像进行膨胀腐蚀处理
img = cv2.dilate(img, kernelX, anchor=(-1, -1), iterations=2)
img = cv2.erode(img, kernelX, anchor=(-1, -1), iterations=4)
img = cv2.dilate(img, kernelX, anchor=(-1, -1), iterations=2)
img = cv2.erode(img, kernelY, anchor=(-1, -1), iterations=1)
img = cv2.dilate(img, kernelY, anchor=(-1, -1), iterations=2)
#再对图像进行模糊处理
img = cv2.medianBlur(img, 15)
img = cv2.medianBlur(img, 15)
cv2.imshow('dilate&erode', img)#检测轮廓,
#输入的三个参数分别为:输入图像、层次类型、轮廓逼近方法
#因为这个函数会修改输入图像,所以上面的步骤使用copy函数将原图像做一份拷贝,再处理
#返回的三个返回值分别为:修改后的图像、图轮廓、层次
image, contours, hier = cv2.findContours(img.copy(), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)for c in contours:# 边界框x, y, w, h = cv2.boundingRect(c)cv2.rectangle(img, (x, y), (x + w, y + h), (255, 0, 0), 2)print('w' + str(w))print('h' + str(h))print(float(w)/h)print('------')#由于国内普通小车车牌的宽高比为3.14,所以,近似的认为,只要宽高比大于2.2且小于4的则认为是车牌if float(w)/h >= 2.2 and float(w)/h <= 4.0:#将车牌从原图中切割出来lpImage = sourceImage[y:y+h, x:x+w]if 'lpImage' not in dir():print('未检测到车牌!')cv2.waitKey(0)cv2.destroyAllWindows()exit()cv2.imshow('img', lpImage)
cv2.waitKey(0)
cv2.destroyAllWindows()

4、字符分割

字符分割方法很多,其中之一是:轮廓检测分割如下:

#边缘检测
lpImage = cv2.Canny(lpImage, 500, 200, 3)
#对图像进行二值化操作
ret, thresh = cv2.threshold(lpImage.copy(), 127, 255, cv2.THRESH_BINARY)
cv2.imshow('img', thresh)
cv2.waitKey(0)
cv2.destroyAllWindows()

4、模板匹配识别

识别结果

识别数据输出到图片

后续更新...

车牌识别(基于模板匹配算法)相关推荐

  1. 【图像识别】基于模板匹配算法求解车牌识别问题matlab代码含GUI界面

    1 简介 随着经济社会的迅速发展,人民对生活水平的要求也不断提高,从而引起汽车的数量的增加.给出行带来便捷的同时,车辆的管理问题也日益显著.车牌识别系统是指能将监控中运动的车辆的汽车牌照信息从复杂背景 ...

  2. 【车牌识别】基于模板匹配算法的车牌识别门禁系统附matlab代码

    1 简介 随着社会的进步,汽车数量日益增加,城市交通状况越来越受到人们的重视,如何进行有效的交通管理成为目前亟待解决的问题.针对此问题,人们相继研制出了各种交通道路监管系统,各种各样的车牌识别系统也应 ...

  3. 【图像识别】基于模板匹配算法求解车牌识别问题matlab代码

    1 简介 随着经济社会的迅速发展,人民对生活水平的要求也不断提高,从而引起汽车的数量的增加.给出行带来便捷的同时,车辆的管理问题也日益显著.车牌识别系统是指能将监控中运动的车辆的汽车牌照信息从复杂背景 ...

  4. 【图像识别】基于模板匹配算法实现手写英文字母识别matlab代码

    1 简介 人类文明的发展离不开信息的传递.文字一直是人们传递信息的一个重要媒介,承载着记录人类文明的重要使命.随着科技的发展,积累的文字信息日益增多,有效的存储和利用这些文字信息成为一个亟待解决的问题 ...

  5. 【交通标志识别】基于模板匹配算法实现限速交通标志识别附matlab代码

    1 简介 为实现限速交通标志的快速准确识别,采用模板匹配对限速交通标志进行识别.首先图像进行倾斜校正,并在HSV颜色空间进行分割,提取感兴趣区域(ROI),然后利用垂直投影分割字符,最后通过和模板字符 ...

  6. 【车牌识别】模板匹配车牌库识别【含GUI Matlab源码 416期】

    ⛄一.车牌识别简介 车牌识别技术起源于20世纪80年代初期,图像模式识别和计算机视觉在其中起到至关重要的作用.随着计算机技术的迅速普及和进步,80年代中后期,车牌识别系统逐步投入市场并使用,但识别精度 ...

  7. linux车牌识别,基于嵌入式Linux的电子车牌识别系统设计与实现

    摘要: 本文研究的电子车牌识别系统,是国内近几年非常热门的研究项目之一.电子车牌识别系统在车辆管理方面具有可靠性高,操作简单,成本低廉等优点,对于解决城市车流量监控,道路拥堵,车辆非法营运等问题将会有 ...

  8. 【车牌识别】模板匹配新能源、轿车、货车车牌识别【含GUI Matlab源码 2169期】

    ⛄一.模板匹配车牌识别简介 1 系统整体设计 车牌识别系统包括4个步骤:车牌定位 (包括识别图像中的车牌位置并将其分割) .图像处理.字符分割与字符识别, 如图1所示.车牌定位的主要功能是从图像中可能 ...

  9. mser python车牌识别,基于OPENCV的车辆牌照识别系统研究

    摘要: 在我国汽车工业迅猛发展的今天,汽车保有量的逐年大幅增加,对传统的车辆管理和交通运行方式面临着巨大的压力和挑战.为了解决上述问题,车辆牌照自动识别技术(AVI)应运而生,并发展成为现代智能交通系 ...

  10. 【指纹识别】基于模板匹配算法实现指纹录入打卡系统附matlab代码

    1 简介 指纹识别技术是生物识别技术的一种,正因为指纹具备唯一性和不变性等特征使得指纹识别技术已经被广泛的应用于身份鉴证等多种领域.一般而言,一个指纹数字图像识别系统通常由指纹数字图像预处理.特征提取 ...

最新文章

  1. oralce 角色 权限
  2. replace 替换字符串
  3. UVA-572-搜索基础题
  4. carray 、clist、cmap
  5. Web 渗透之信息收集
  6. dnf php的补丁放哪,DNF模型文件在哪 补丁玩家必备知识
  7. 制作背景为透明的logo
  8. php dingo和jwt,三、Laravel5.4+Dingo+JWT 开发API
  9. 使用CM快速搭建CDH集群
  10. 程序员办公桌都如此霸气,网友:砖头当杯垫也是不敢惹!
  11. E-游戏机本当下手(北京信息科技大学第十二届程序设计竞赛暨ACM选拔赛)
  12. 证件照制作小程序源码下载-超级实用工具
  13. 访问网址 token的格式_一文彻底搞懂Cookie、Session、Token到底是什么
  14. 社工要掌握哪些计算机基本操作,【作为一名专业社工哪些方面需要注意】- 环球网校...
  15. 怎么给word文档注音_请教如何在WORD文档中给汉语拼音加上声调?
  16. java:左右手交换纸牌
  17. 主导问题排查的流程总结
  18. 【异常】Session 0x0 for server null, unexpected error, closing socket connection and attempting reconn
  19. unity中的动态绑定、赋值等
  20. ubuntu16.04登录后一直卡在紫色界面的解决方案

热门文章

  1. 视频教程-金蝶K3 WISE 视频教程-ERP
  2. 01 学习如鹏网的C语言免费课程
  3. 面试产品经理,参考题目,考察点,简历筛选标准,总结
  4. 查看Hadoop的版本号
  5. 长春高中计算机考试时间安排,2019年长春中考考试时间安排,长春中考考试科目时间安排表...
  6. 腾讯电脑管家卸载后的残留信息有哪些
  7. 最新中国数据中心排行榜
  8. 流量映射端口反弹(lcx,ew)
  9. Mac环境下使用XMAPP 安装testlink
  10. 第一章 python基础