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中用于去除空格的三个函数的使用小结
Apr 07 Python
详解Python的Django框架中的模版相关知识
Jul 15 Python
TensorFlow如何实现反向传播
Feb 06 Python
python解决js文件utf-8编码乱码问题(推荐)
May 02 Python
Python中collections模块的基本使用教程
Dec 07 Python
Python子类继承父类构造函数详解
Feb 19 Python
Python中BeautifuSoup库的用法使用详解
Nov 15 Python
Python解析多帧dicom数据详解
Jan 13 Python
Tkinter中复选菜单是否被选中的判断与设置方式
Mar 04 Python
python中wheel的用法整理
Jun 15 Python
浅谈django框架集成swagger以及自定义参数问题
Jul 07 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&amp;&amp;mysql)一
2006/10/09 PHP
PHP中spl_autoload_register()函数用法实例详解
2016/07/18 PHP
浅谈php://filter的妙用
2019/03/05 PHP
PHP回调函数简单用法示例
2019/05/08 PHP
jquery 选项卡效果 新手代码
2011/07/08 Javascript
js使浏览器窗口最大化实现代码(适用于IE)
2013/08/07 Javascript
jquery操作select方法汇总
2015/02/05 Javascript
JavaScript中length属性的使用方法
2015/06/05 Javascript
阿里云ecs服务器中安装部署node.js的步骤
2016/10/08 Javascript
深入理解vue-loader如何使用
2017/06/06 Javascript
Vue2.0学习之详解Vue 组件及父子组件通信
2017/12/12 Javascript
js jquery 获取某一元素到浏览器顶端的距离实现方法
2018/09/05 jQuery
微信小程序自定义组件传值 页面和组件相互传数据操作示例
2019/05/05 Javascript
js图片无缝滚动插件使用详解
2020/05/26 Javascript
vue动态循环出的多个select出现过的变为disabled(实例代码)
2019/11/10 Javascript
React 条件渲染最佳实践小结(7种)
2020/09/27 Javascript
Python的Flask框架中实现分页功能的教程
2015/04/20 Python
Python3.6实现连接mysql或mariadb的方法分析
2018/05/18 Python
Python面向对象之类和对象属性的增删改查操作示例
2018/12/14 Python
通过selenium抓取某东的TT购买记录并分析趋势过程解析
2019/08/15 Python
HTML5新表单元素_动力节点Java学院整理
2017/07/12 HTML / CSS
用HTML5.0制作网页的教程
2010/05/30 HTML / CSS
HTML5在微信内置浏览器下右上角菜单的调整字体导致页面显示错乱的问题
2021/01/19 HTML / CSS
汽车电子与维修专业大学生求职信
2013/09/28 职场文书
《长江之歌》教学反思
2014/04/17 职场文书
运动会方阵口号
2014/06/07 职场文书
银行进社区活动总结
2014/07/07 职场文书
党性教育心得体会
2014/09/03 职场文书
信息与计算机科学职业规划范文:成为一艘有方向的船
2014/09/11 职场文书
乡镇干部党的群众路线教育实践活动个人对照检查材料
2014/09/24 职场文书
奖励通知
2015/04/22 职场文书
时尚女魔头观后感
2015/06/04 职场文书
新娘父亲婚礼致辞
2015/07/27 职场文书
年终奖金发放管理制度,中小企业适用,拿去救急吧!
2019/07/12 职场文书
用php如何解决大文件分片上传问题
2021/07/07 PHP
springboot应用服务启动事件的监听实现
2022/04/06 Java/Android