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正则表达式使用经典实例
Jun 21 Python
Python信息抽取之乱码解决办法
Jun 29 Python
Tensorflow使用tfrecord输入数据格式
Jun 19 Python
django缓存配置的几种方法详解
Jul 16 Python
django从请求到响应的过程深入讲解
Aug 01 Python
Python匿名函数及应用示例
Apr 09 Python
python中的单引号双引号区别知识点总结
Jun 23 Python
python基于opencv检测程序运行效率
Dec 28 Python
tensorflow之获取tensor的shape作为max_pool的ksize实例
Jan 04 Python
Python qrcode 生成一个二维码的实例详解
Feb 12 Python
python GUI库图形界面开发之PyQt5单行文本框控件QLineEdit详细使用方法与实例
Feb 27 Python
详解python中[-1]、[:-1]、[::-1]、[n::-1]使用方法
Apr 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
在PWS上安装PHP4.0正式版
2006/10/09 PHP
解析PHP计算页面执行时间的实现代码
2013/06/18 PHP
php使用正则表达式进行字符串搜索的方法
2015/03/23 PHP
PHP 爬取网页的主要方法
2018/07/13 PHP
PHP反射实际应用示例
2019/04/03 PHP
PHP发送邮件确认验证注册功能示例【修改别人邮件类】
2019/11/09 PHP
PHP7 list() 函数修改
2021/03/09 PHP
javascript 运算数的求值顺序
2011/08/23 Javascript
js 弹出框只弹一次(二次修改之后的)
2013/11/26 Javascript
jquery实现仿JqueryUi可拖动的DIV实例
2015/07/31 Javascript
window.location.hash知识汇总
2015/11/09 Javascript
Node.js如何自动审核团队的代码
2016/07/20 Javascript
理解javascript中的闭包
2017/01/11 Javascript
原生js实现图片放大缩小计时器效果
2017/01/20 Javascript
详解node nvm进行node多版本管理
2017/10/21 Javascript
vue自定义键盘信息、监听数据变化的方法示例【基于vm.$watch】
2019/03/16 Javascript
vue使用微信JS-SDK实现分享功能
2019/08/23 Javascript
Vue组件通信入门之Provide和Inject机制
2019/12/29 Javascript
vue中的循环对象属性和属性值用法
2020/09/04 Javascript
[51:22]Fnatic vs IG 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/18 DOTA
Python中用Descriptor实现类级属性(Property)详解
2014/09/18 Python
python创建列表并给列表赋初始值的方法
2015/07/28 Python
解析Python中的__getitem__专有方法
2016/06/27 Python
CentOS6.5设置Django开发环境
2016/10/13 Python
利用python程序帮大家清理windows垃圾
2017/01/15 Python
python3.6利用pyinstall打包py为exe的操作实例
2018/10/31 Python
详解用python生成随机数的几种方法
2019/08/04 Python
Python pip 安装与使用(安装、更新、删除)
2019/10/06 Python
如何快速一次性卸载所有python包(第三方库)呢
2020/10/20 Python
AmazeUI 点击元素显示全屏的实现
2020/08/25 HTML / CSS
如何使用PHP session
2015/04/21 面试题
什么时候用assert
2015/05/08 面试题
本科毕业生自我鉴定
2013/11/02 职场文书
结婚通知短信怎么写
2015/04/17 职场文书
2015年学校团委工作总结
2015/05/26 职场文书
2016年教师政治思想表现评语
2015/12/02 职场文书