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 13 Python
python集合用法实例分析
May 30 Python
python操作字典类型的常用方法(推荐)
May 16 Python
详解python实现线程安全的单例模式
Mar 05 Python
python 调用有道api接口的方法
Jan 03 Python
django中使用POST方法获取POST数据
Aug 20 Python
Python通过VGG16模型实现图像风格转换操作详解
Jan 16 Python
自定义Django默认的sitemap站点地图样式
Mar 04 Python
Python SMTP配置参数并发送邮件
Jun 16 Python
Python分析最近大火的网剧《隐秘的角落》
Jul 02 Python
Python常用库Numpy进行矩阵运算详解
Jul 21 Python
Python爬虫+tkinter界面实现历史天气查询的思路详解
Feb 22 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
基于qmail的完整WEBMAIL解决方案安装详解
2006/10/09 PHP
PHP手机号码归属地查询代码(API接口/mysql)
2012/09/04 PHP
PHP中最容易忘记的一些知识点总结
2013/04/28 PHP
PHP实现操作redis的封装类完整实例
2015/11/14 PHP
Symfony生成二维码的方法
2016/02/04 PHP
php 输入输出流详解及示例代码
2016/08/25 PHP
php微信公众号开发(3)php实现简单微信文本通讯
2016/12/15 PHP
Laravel5.7 数据库操作迁移的实现方法
2019/04/12 PHP
基于Jquery的动态添加控件并取值的实现代码
2010/09/24 Javascript
主页面中的两个iframe实现鼠标拖动改变其大小
2013/04/16 Javascript
JS 获取浏览器和屏幕宽高等信息代码
2014/03/31 Javascript
javascript替换已有元素replaceChild()使用介绍
2014/04/03 Javascript
jquery JSON的解析方式示例介绍
2014/07/27 Javascript
jQuery图片轮播滚动切换代码分享
2020/04/20 Javascript
javascript特效实现——当前时间和倒计时效果的简单实例
2016/07/20 Javascript
jQuery实现鼠标滑过图片移动特效
2016/12/08 Javascript
浅谈如何使用 webpack 优化资源
2017/10/20 Javascript
Node.js中环境变量process.env的一些事详解
2017/10/26 Javascript
详解关于vue-area-linkage走过的坑
2018/06/27 Javascript
React 项目迁移 Webpack Babel7的实现
2018/09/12 Javascript
JS实现json数组排序操作实例分析
2019/10/28 Javascript
JS遍历树层级关系实现原理解析
2020/08/31 Javascript
小程序自定义圆形进度条
2020/11/17 Javascript
python web框架学习笔记
2016/05/03 Python
Python中getattr函数和hasattr函数作用详解
2016/06/14 Python
python实现图书馆研习室自动预约功能
2018/04/27 Python
Python常用库大全及简要说明
2020/01/17 Python
Python利用Faiss库实现ANN近邻搜索的方法详解
2020/08/03 Python
手把手教你如何用Pycharm2020.1.1配置远程连接的详细步骤
2020/08/07 Python
语文教育专业应届生求职信
2013/11/23 职场文书
毕业生就业自荐书
2013/12/15 职场文书
毕业大学生自荐信
2014/06/17 职场文书
小学优秀教师先进事迹材料
2014/12/16 职场文书
2015年实习班主任工作总结
2015/04/23 职场文书
失恋33天观后感
2015/06/11 职场文书
如何利用python实现列表嵌套字典取值
2022/06/10 Python