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生成器的使用方法
Nov 21 Python
python递归打印某个目录的内容(实例讲解)
Aug 30 Python
Jupyter安装nbextensions,启动提示没有nbextensions库
Apr 23 Python
对numpy和pandas中数组的合并和拆分详解
Apr 11 Python
实例分析python3实现并发访问水平切分表
Sep 29 Python
在scrapy中使用phantomJS实现异步爬取的方法
Dec 17 Python
Python实现定时自动关闭的tkinter窗口方法
Feb 16 Python
使用python实现简单五子棋游戏
Jun 18 Python
Python SSL证书验证问题解决方案
Jan 13 Python
利用Python自动化操作AutoCAD的实现
Apr 01 Python
django项目中新增app的2种实现方法
Apr 01 Python
python一些性能分析的技巧
Aug 30 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
CI框架中zip类应用示例
2014/06/17 PHP
调试WordPress中定时任务的相关PHP脚本示例
2015/12/10 PHP
6款新颖的jQuery和CSS3进度条插件推荐
2013/03/05 Javascript
[原创]推荐10款最热门jQuery UI框架
2014/08/19 Javascript
JS实现点击文字对应DIV层不停闪动效果的方法
2015/03/02 Javascript
javascript验证身份证号
2015/03/03 Javascript
JavaScript动态加载样式表的方法
2015/03/21 Javascript
JS将滑动门改为选项卡(需鼠标点击)的实现方法
2015/09/27 Javascript
浏览器复制插件zeroclipboard使用指南
2016/03/26 Javascript
弹出遮罩层后禁止滚动效果【实现代码】
2016/04/29 Javascript
javascript加减乘除的简单实例
2016/07/12 Javascript
关于Function中的bind()示例详解
2016/12/02 Javascript
走进javascript——不起眼的基础,值和分号
2017/02/24 Javascript
Angularjs 与 bower安装和使用详解
2017/05/11 Javascript
WebStorm ES6 语法支持设置&amp;babel使用及自动编译(详解)
2017/09/08 Javascript
javascript实现获取一个日期段内每天不同的价格(计算入住总价格)
2018/02/05 Javascript
webpack里使用jquery.mCustomScrollbar插件的方法
2018/05/30 jQuery
webpack 3.X学习之多页面打包的方法
2018/09/04 Javascript
vue实现axios图片上传功能
2019/08/20 Javascript
springboot+vue实现文件上传下载
2020/11/17 Vue.js
[09:40]DAC2018 4.5 SOLO赛 MidOne vs Miracle
2018/04/06 DOTA
在Django的URLconf中使用命名组的方法
2015/07/18 Python
python编程培训 python培训靠谱吗
2018/01/17 Python
python实现的生成word文档功能示例
2019/08/23 Python
Python paramiko模块使用解析(实现ssh)
2019/08/30 Python
使用turtle绘制五角星、分形树
2019/10/06 Python
PyTorch 解决Dataset和Dataloader遇到的问题
2020/01/08 Python
加拿大约会网站:EliteSingles.ca
2018/01/12 全球购物
Belvilla法国:休闲度假房屋出租
2020/10/03 全球购物
一些高难度的SQL面试题
2016/11/29 面试题
公司前台接待岗位职责
2013/12/03 职场文书
法制宣传教育方案
2014/05/09 职场文书
企业党的群众路线教育实践活动领导班子对照检查材料
2014/09/25 职场文书
乡镇群众路线教育实践活动整改措施
2014/10/04 职场文书
学习型家庭事迹材料
2014/12/20 职场文书
2019财务管理制度最新范本!
2019/07/09 职场文书