python实现车牌识别的示例代码


Posted in Python onAugust 05, 2019

某天回家之时,听到有个朋友说起他正在做一个车牌识别的项目

于是对其定位车牌的位置算法颇有兴趣,今日有空得以研究,事实上车牌识别算是比较成熟的技术了,

这里我只是简单实现。

我的思路为:

对图片进行一些预处理,包括灰度化、高斯平滑、中值滤波、Sobel算子边缘检测等等。

利用OpenCV对预处理后的图像进行轮廓查找,然后根据一些参数判断该轮廓是否为车牌轮廓。

效果如下:

test1:

python实现车牌识别的示例代码

python实现车牌识别的示例代码

test2

python实现车牌识别的示例代码

python实现车牌识别的示例代码

实现代码如下(对图像预处理(滤波器等)的原理比较简单,这里只是对一些函数进行调包):

import cv2
import numpy as np
 
 
# 形态学处理
def Process(img):
	# 高斯平滑
	gaussian = cv2.GaussianBlur(img, (3, 3), 0, 0, cv2.BORDER_DEFAULT)
	# 中值滤波
	median = cv2.medianBlur(gaussian, 5)
	# Sobel算子
	# 梯度方向: x
	sobel = cv2.Sobel(median, cv2.CV_8U, 1, 0, ksize=3)
	# 二值化
	ret, binary = cv2.threshold(sobel, 170, 255, cv2.THRESH_BINARY)
	# 核函数
	element1 = cv2.getStructuringElement(cv2.MORPH_RECT, (9, 1))
	element2 = cv2.getStructuringElement(cv2.MORPH_RECT, (9, 7))
	# 膨胀
	dilation = cv2.dilate(binary, element2, iterations=1)
	# 腐蚀
	erosion = cv2.erode(dilation, element1, iterations=1)
	# 膨胀
	dilation2 = cv2.dilate(erosion, element2, iterations=3)
	return dilation2
 
 
def GetRegion(img):
	regions = []
	# 查找轮廓
	_, contours, hierarchy = cv2.findContours(img, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
	for contour in contours:
		area = cv2.contourArea(contour)
		if (area < 2000):
			continue
		eps = 1e-3 * cv2.arcLength(contour, True)
		approx = cv2.approxPolyDP(contour, eps, True)
		rect = cv2.minAreaRect(contour)
		box = cv2.boxPoints(rect)
		box = np.int0(box)
		height = abs(box[0][1] - box[2][1])
		width = abs(box[0][0] - box[2][0])
		ratio =float(width) / float(height)
		if (ratio < 5 and ratio > 1.8):
			regions.append(box)
	return regions
 
 
def detect(img):
	# 灰度化
	gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
	prc = Process(gray)
	regions = GetRegion(prc)
	print('[INFO]:Detect %d license plates' % len(regions))
	for box in regions:
		cv2.drawContours(img, [box], 0, (0, 255, 0), 2)
	cv2.imshow('Result', img)
  #保存结果文件名
	cv2.imwrite('result2.jpg', img)
	cv2.waitKey(0)
	cv2.destroyAllWindows()
 
 
if __name__ == '__main__':
  #输入的参数为图片的路径
	img = cv2.imread('test2.jpg')
	detect(img)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python实现统计给定字符串中重复模式最高子串功能示例
May 16 Python
python将list转为matrix的方法
Dec 12 Python
Django时区详解
Jul 24 Python
解决Djang2.0.1中的reverse导入失败的问题
Aug 16 Python
Python中的相关分析correlation analysis的实现
Aug 29 Python
Python生成验证码、计算具体日期是一年中的第几天实例代码详解
Oct 16 Python
python使用rsa非对称加密过程解析
Dec 28 Python
Python字符编码转码之GBK,UTF8互转
Feb 09 Python
在jupyter notebook中调用.ipynb文件方式
Apr 14 Python
一个入门级python爬虫教程详解
Jan 27 Python
python 下划线的多种应用场景总结
May 12 Python
python小型的音频操作库mp3Play
Apr 24 Python
使用python实现滑动验证码功能
Aug 05 #Python
Django 源码WSGI剖析过程详解
Aug 05 #Python
Python使用itchat 功能分析微信好友性别和位置
Aug 05 #Python
Python队列RabbitMQ 使用方法实例记录
Aug 05 #Python
Python 通过微信控制实现app定位发送到个人服务器再转发微信服务器接收位置信息
Aug 05 #Python
基于python框架Scrapy爬取自己的博客内容过程详解
Aug 05 #Python
基于python实现的百度音乐下载器python pyqt改进版(附代码)
Aug 05 #Python
You might like
使用字符串函数输出整数化的PHP版本号
2006/10/09 PHP
PHP中exec与system用法区别分析
2014/09/22 PHP
JavaScript 指导方针
2007/04/05 Javascript
判断对象是否Window的实现代码
2012/01/10 Javascript
在浏览器窗口上添加遮罩层的方法
2012/11/12 Javascript
js控制iframe的高度/宽度让其自适应内容
2014/04/09 Javascript
jQuery中关于ScrollableGridPlugin.js(固定表头)插件的使用逐步解析
2014/07/17 Javascript
javascript实现点击商品列表checkbox实时统计金额的方法
2015/05/15 Javascript
jQuery实现首页图片淡入淡出效果的方法
2015/06/10 Javascript
jquery实现通用的内容渐显Tab选项卡效果
2015/09/07 Javascript
复杂的javascript窗口分帧解析
2016/02/19 Javascript
微信公众号开发 自定义菜单跳转页面并获取用户信息实例详解
2016/12/08 Javascript
webstorm添加vue.js支持的方法教程
2017/07/05 Javascript
你应该知道的几类npm依赖包管理详解
2017/10/06 Javascript
vue增加强缓存和版本号的实现方法
2019/05/01 Javascript
自定义Vue组件打包、发布到npm及使用教程
2019/05/22 Javascript
前端天气插件tpwidget使用方法详解
2019/06/24 Javascript
在Django的视图中使用数据库查询的方法
2015/07/16 Python
python函数中return后的语句一定不会执行吗?
2017/07/06 Python
pycharm中成功运行图片的配置教程
2018/10/28 Python
python使用插值法画出平滑曲线
2018/12/15 Python
python二维码操作:对QRCode和MyQR入门详解
2019/06/24 Python
Python原始套接字编程实例解析
2020/01/29 Python
使用python实现下载我们想听的歌曲,速度超快
2020/07/09 Python
利用CSS3的checked伪类实现OL的隐藏显示的方法
2010/12/18 HTML / CSS
CAT鞋英国官网:坚固耐用的靴子和鞋
2016/10/21 全球购物
Java面试题:为什么要用Java
2012/05/11 面试题
高级电工工作职责
2013/11/21 职场文书
环保公益广告语
2014/03/13 职场文书
财务会计专业求职信
2014/06/09 职场文书
2014年9.18纪念日演讲稿
2014/09/14 职场文书
2014年党的群众路线活动个人整改措施
2014/10/28 职场文书
2014年信息中心工作总结
2014/12/17 职场文书
2015年国庆节慰问信
2015/03/23 职场文书
导游词之苏州盘门景区
2019/11/12 职场文书
微信小程序和php的登录实现
2021/04/01 PHP