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 23 Python
安装Python的web.py框架并从hello world开始编程
Apr 25 Python
Python编程之变量赋值操作实例分析
Jul 24 Python
Python中实例化class的执行顺序示例详解
Oct 14 Python
对python 匹配字符串开头和结尾的方法详解
Oct 27 Python
pyqt5 实现在别的窗口弹出进度条
Jun 18 Python
浅谈PyQt5 的帮助文档查找方法,可以查看每个类的方法
Jun 25 Python
Python获取命令实时输出-原样彩色输出并返回输出结果的示例
Jul 11 Python
Python中的延迟绑定原理详解
Oct 11 Python
使用Python进行中文繁简转换的实现代码
Oct 18 Python
Elasticsearch 聚合查询和排序
Apr 19 Python
利用Python实现模拟登录知乎
May 25 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 数组遍历顺序理解
2009/09/09 PHP
如何用php生成扭曲及旋转的验证码图片
2013/06/07 PHP
使用ob系列函数实现PHP网站页面静态化
2014/08/13 PHP
thinkPHP简单调用函数与类库的方法
2017/03/15 PHP
thinkPHP5.0框架独立配置与动态配置方法
2017/03/17 PHP
Javascript结合css实现网页换肤功能
2009/11/02 Javascript
node.js中的dns.getServers方法使用说明
2014/12/08 Javascript
JS实现简单路由器功能的方法
2015/05/27 Javascript
angularJS Provider、factory、service详解及实例代码
2016/09/21 Javascript
探究JavaScript中的五种事件处理程序方式
2016/12/07 Javascript
微信小程序实战之运维小项目
2017/01/17 Javascript
nodejs实现连接mongodb数据库的方法示例
2018/03/15 NodeJs
jQuery滚动条美化插件nicescroll简单用法示例
2018/04/18 jQuery
使用jQuery如何写一个含验证码的登录界面
2019/05/13 jQuery
vue-cli3项目展示本地Markdown文件的方法
2019/06/07 Javascript
vue日历/日程提醒/html5本地缓存功能
2019/09/02 Javascript
vue新建项目并配置标准路由过程解析
2019/12/09 Javascript
Python操作MongoDB数据库PyMongo库使用方法
2015/04/27 Python
python判断一个集合是否包含了另外一个集合中所有项的方法
2015/06/30 Python
python3实现基于用户的协同过滤
2018/05/31 Python
Python中的取模运算方法
2018/11/10 Python
详解Django 时间与时区设置问题
2019/07/23 Python
Pytorch之finetune使用详解
2020/01/18 Python
俄罗斯达美乐比萨外送服务:Domino’s Pizza
2020/12/18 全球购物
C#如何调用Word并打开一个Word文档
2013/05/08 面试题
大学毕业寄语大全
2014/04/10 职场文书
代理协议书范本
2014/04/22 职场文书
大学生通用个人自我评价
2014/04/27 职场文书
《桃林那间小木屋》教学反思
2014/05/01 职场文书
活动总结的格式
2014/05/07 职场文书
教师工作决心书
2015/02/04 职场文书
检察院起诉意见书
2015/05/20 职场文书
师德师风心得体会(2016精选篇)
2016/01/12 职场文书
高中政治教学反思
2016/02/23 职场文书
强烈推荐:小学生:暑假作息时间表(值得收藏)
2019/07/09 职场文书
bat批处理之字符串操作的实现
2022/03/16 Python