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中的文件和目录操作实现代码
Mar 13 Python
Python初学时购物车程序练习实例(推荐)
Aug 08 Python
Python删除Java源文件中全部注释的实现方法
Aug 30 Python
Python3中exp()函数用法分析
Feb 19 Python
python 实现快速生成连续、随机字母列表
Nov 28 Python
深入了解如何基于Python读写Kafka
Dec 31 Python
使用pytorch搭建AlexNet操作(微调预训练模型及手动搭建)
Jan 18 Python
pytorch实现Tensor变量之间的转换
Feb 17 Python
python实现图像全景拼接
Mar 27 Python
解决keras加入lambda层时shape的问题
Jun 11 Python
Ubuntu配置Pytorch on Graph (PoG)环境过程图解
Nov 19 Python
浅谈Python 中的复数问题
May 19 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删除非空目录的函数代码小结
2013/02/28 PHP
THinkPHP获取客户端IP与IP地址查询的方法
2016/11/14 PHP
php 数据结构之链表队列
2017/10/17 PHP
javascript之对系统的toFixed()方法的修正
2007/05/08 Javascript
避免 showModalDialog 弹出新窗体的原因分析
2010/05/31 Javascript
Javascript面向对象扩展库代码分享
2012/03/27 Javascript
jQuery 自定义函数写法分享
2012/03/30 Javascript
javascript的console.log()用法小结
2012/05/31 Javascript
浅谈javascript中的闭包
2015/05/13 Javascript
手机端转盘抽奖代码分享
2015/09/10 Javascript
AngularJS directive返回对象属性详解
2016/03/28 Javascript
JS实现刷新父页面不弹出提示框的方法
2016/06/22 Javascript
AngularJS基础 ng-include 指令简单示例
2016/08/01 Javascript
jQuery多文件异步上传带进度条实例代码
2016/08/16 Javascript
label+input实现按钮开关切换效果的实例
2017/08/16 Javascript
nodejs创建简易web服务器与文件读写的实例
2017/09/07 NodeJs
探讨Vue.js的组件和模板
2017/10/27 Javascript
node作为中间服务层如何发送请求(发送请求的实现方法详解)
2018/01/02 Javascript
vue-cli 3.0 版本与3.0以下版本在搭建项目时的区别详解
2018/12/11 Javascript
Vue自定义指令上报Google Analytics事件统计的方法
2019/02/25 Javascript
node运行js获得输出的三种方式示例详解
2020/07/02 Javascript
python实现的二叉树定义与遍历算法实例
2017/06/30 Python
详解如何用OpenCV + Python 实现人脸识别
2017/10/20 Python
python仿抖音表白神器
2019/04/08 Python
用Python实现校园通知更新提醒功能
2019/11/23 Python
pytorch使用 to 进行类型转换方式
2020/01/08 Python
手机端用rem+scss做适配的详解
2017/11/15 HTML / CSS
美国最大的宠物药店:1-800-PetMeds
2016/10/02 全球购物
军用级手机壳,专为冒险而建:Zizo Wireless
2019/08/07 全球购物
汽车广告策划方案
2014/05/31 职场文书
绘画专业自荐信
2014/07/04 职场文书
调研座谈会发言材料
2014/08/23 职场文书
学生逃课检讨书1000字
2014/10/20 职场文书
员工辞职信范文
2015/03/02 职场文书
python实现监听键盘
2021/04/26 Python
Spring事务管理下synchronized锁失效问题的解决方法
2022/03/31 Java/Android