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基础教程之数字处理(math)模块详解
Mar 25 Python
python的类方法和静态方法
Dec 13 Python
python实现的jpg格式图片修复代码
Apr 21 Python
一文总结学习Python的14张思维导图
Oct 17 Python
详解python多线程、锁、event事件机制的简单使用
Apr 27 Python
Django实现基于类的分页功能
Oct 31 Python
Python3打包exe代码2种方法实例解析
Feb 17 Python
Python如何实现邮件功能
May 27 Python
Numpy中ndim、shape、dtype、astype的用法详解
Jun 14 Python
Django migrate报错的解决方案
May 20 Python
Python实现的扫码工具居然这么好用!
Jun 07 Python
关于Python使用turtle库画任意图的问题
Apr 01 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
10个可以简化php开发过程的MySQL工具
2010/04/11 PHP
php文件夹与文件目录操作函数介绍
2013/09/09 PHP
一个简单且很好用的php分页类
2013/10/26 PHP
php实现用户登陆简单实例
2017/04/04 PHP
PHP 访问数据库配置通用方法(json)
2018/05/20 PHP
Laravel框架执行原生SQL语句及使用paginate分页的方法
2018/08/17 PHP
PHP isset empty函数相关面试题及解析
2020/12/11 PHP
jQuery UI-Draggable 参数集合
2010/01/10 Javascript
jQuery EasyUI API 中文文档 - ProgressBar 进度条
2011/09/29 Javascript
自己实现string的substring方法 人民币小写转大写,数字反转,正则优化
2012/09/02 Javascript
javascript-简单的计算器实现步骤分解(附图)
2013/05/30 Javascript
JS实现网页标题栏显示当前时间和日期的完整代码
2015/11/02 Javascript
vue-cli3 从搭建到优化的详细步骤
2019/01/20 Javascript
11个教程中不常被提及的JavaScript小技巧(推荐)
2019/04/17 Javascript
Vue+Typescript中在Vue上挂载axios使用时报错问题
2019/08/07 Javascript
茶余饭后聊聊Vue3.0响应式数据那些事儿
2019/10/30 Javascript
Python中声明只包含一个元素的元组数据方法
2014/08/25 Python
Python输出带颜色的字符串实例
2017/10/10 Python
利用Python代码实现数据可视化的5种方法详解
2018/03/25 Python
python实现画一颗树和一片森林
2018/06/25 Python
在Python 中实现图片加框和加字的方法
2019/01/26 Python
python 实现返回一个列表中出现次数最多的元素方法
2019/06/11 Python
python绘制雪景图
2019/12/16 Python
python七种方法判断字符串是否包含子串
2020/08/18 Python
Selenium+BeautifulSoup+json获取Script标签内的json数据
2020/12/07 Python
浅谈CSS3特性查询(Feature Query: @supports)功能简介
2017/07/31 HTML / CSS
南京软件公司的.net程序员笔试题
2014/08/31 面试题
房地产开盘策划方案
2014/02/10 职场文书
党员应该树立反腐倡廉的坚定意识思想汇报
2014/09/12 职场文书
2014年重阳节老干部座谈会上的讲话稿
2014/09/25 职场文书
房屋产权证明书
2014/10/15 职场文书
小学生优秀评语
2014/12/29 职场文书
婚礼新人答谢词
2015/01/04 职场文书
教导主任个人总结
2015/03/03 职场文书
python如何利用cv2模块读取显示保存图片
2021/06/04 Python
Nginx实现负载均衡的项目实践
2022/03/18 Servers