Python OpenCv 车牌检测识别(边缘检测、HSV色彩空间判断)
Python OpenCv 车牌检测识别
背景
车牌识别在交通、停车等方面有着广泛应用,在网上也有很多种基于OpenCV方案进行识别,本文是综合了两种比较流行的方案,首先是提取出疑似车牌区域的轮廓,然后再基于色彩空间进行二次判断,比之前的方案有精度更高,泛化能力更强。
最终效果
详细过程
- 将正常图像等比例压缩并且转化为灰度图像,便于处理以后处理
img = cv2.imread('car2.jpeg')initial_car = cv2.resize(img, (400, int(400 * img.shape[0] / img.shape[1])))gray_car = cv2.cvtColor(initial_car, cv2.COLOR_BGR2GRAY)
- 高斯模糊,消除噪点,便于边缘提取。卷积核所选取的越大,模糊效果越明显,但是也有可能造成重要边缘信息的丢失,应该根据实际情况去调整。
blur_car = cv2.GaussianBlur(gray_car, (7, 7), 0)
- 使用cv2.Canny() 进行边缘检测 此效果强于OpenCV中的Sobel边缘检测。cv2.Canny()返回的一幅二值化的图像,可以直接用cv2.findContours()进行轮廓提取。
canny_car = cv2.Canny(blur_car, 70, 120)
4. 各种形态学操作,主要是让车牌的轮廓更加明显,消除无用的噪点。此处卷积核的选择使用横向卷积核(3,13)3行13列。因为车牌也是一个横向的长方形,这样效果更好。可根据具体情况适当增加开 闭操作的次数。
def morphological_operation(img):kernel = np.ones((3, 13), np.uint8)closing_img = cv2.morphologyEx(img, cv2.MORPH_CLOSE, kernel)opening_img = cv2.morphologyEx(closing_img, cv2.MORPH_OPEN, kernel)kernel_2 = cv2.getStructuringElement(cv2.MORPH_RECT, (5, 5))dilated_car = cv2.dilate(opening_img, kernel_2)return dilated_car
5. 提取轮廓,并且cv2.minAreaRect() 获得包裹轮廓的最小矩形,对这个矩形的长宽比进行判断,看其是否符合车牌特征。
# 对minAreaRect获得的最小外接矩形,用长宽比进行判断
def verify_sizes(rect):error = 0.3aspect = 3.143 # 定义的车牌长宽比 数据来源百度百科==>车牌rmin = aspect - aspect * errorrmax = aspect + aspect * errorheight, width = rect[1]if height == 0 or width == 0:return Falser = width/heightif r < 1:r = height/widthif r < rmin or r > rmax:return Falseelse:return True
- 根据色彩空间进行第二次判断,识别提高精度。
# 根据色彩空间进行二次筛选,图像均值最大的为结果
def verify_color(all_contour):dist_mean = 0t = 0for contour in all_contour:t=t+1x,y,w,h = cv2.boundingRect(contour)# 获取矩形框里面的像素res = initial_car[y:y+h,x:x+w,:]hsv = cv2.cvtColor(res, cv2.COLOR_BGR2HSV)# 蓝色车牌范围lower = np.array([100, 43, 46])upper = np.array([124, 255, 255])# 色彩空间提取,在蓝色范围内为255,不在为0.dist = cv2.inRange(hsv, lower, upper)# 计算均值,输出最大值mean = cv2.mean(dist)if mean[0]>dist_mean:dist_mean = mean[0]dist_img = resreturn dist_img
- 效果展示
Python OpenCv 车牌检测识别(边缘检测、HSV色彩空间判断)相关推荐
- 毕设 深度学习 python opencv 火焰检测识别 火灾检测
文章目录 0 前言 1 基于YOLO的火焰检测与识别 2 课题背景 3 卷积神经网络 3.1 卷积层 3.2 池化层 3.3 激活函数: 3.4 全连接层 3.5 使用tensorflow中keras ...
- 六种车牌检测识别算法GitHub项目调研对比
文章目录 前言 一.EasyOCR 1.1 仓库介绍 1.2 使用记录 二.HyperLPR 2.1 HyperLPR 概述 2.2使用记录 2.3 使用建议 三.simple-car-plate-r ...
- Python OpenCV车道线识别侦测
Python OpenCV车道线识别侦测 如需安装运行环境或远程调试,可加QQ905733049, 或QQ2945218359由专业技术人员远程协助! 运行结果如下: 代码如下: import cv2 ...
- 2021-01-07 Python Opencv转换颜色空间 RGB转为HSV
Python Opencv转换颜色空间 RGB转为HSV 举个例子,通过摄像头把视频中的蓝色区域凸显出来,剩余的颜色均为黑色 import numpy as npcap = cv2.VideoCapt ...
- 【项目三、车牌检测+识别项目】四、使用LPRNet进行车牌识别
目录 前言 一.数据集 二.训练 三.验证 四.测试结果 五.推理代码 Reference 前言 马上要找工作了,想总结下自己做过的几个小项目. 之前已经总结过了我做的第一个项目:xxx病虫害检测项目 ...
- Python opencv进行矩形识别
Python opencv进行矩形识别 图像识别中,圆形和矩形识别是最常用的两种,上一篇讲解了圆形识别,本例讲解矩形识别,最后的结果是可以识别出圆心,4个顶点,如下图: 左边是原始图像,右边是识别结果 ...
- JavaCV进阶opencv图像检测识别:摄像头图像人脸检测
JavaCV免费教程目录: JavaCV入门教程(免费JavaCV教程) javacv实战专栏目录(2016年更新至今): JavaCV实战专栏文章目录(2016年更新至今) 2022年最新JavaC ...
- JavaCV进阶opencv图像检测识别:ffmpeg视频图像画面人脸检测
JavaCV免费教程目录: JavaCV入门教程(免费JavaCV教程) javacv实战专栏目录(2016年更新至今): JavaCV实战专栏文章目录(2016年更新至今) 2022年最新JavaC ...
- 【项目三、车牌检测+识别项目】一、CCPD车牌数据集转为YOLOv5格式和LPRNet格式
目录 前言 一.CCPD数据集介绍 二.CCPD数据集下载 三.划分训练集.验证集和测试集 四.车牌检测数据集制作 五.车牌识别数据集制作 六.我的车牌检测+识别数据集 Reference 前言 马上 ...
最新文章
- 软件测试系列之四 单元测试(Junit)
- 如何在vue中使用图形验证码
- 微服务网关Ocelot
- 阿里3篇技术论文入选国际顶级会议FAST2020,全球第一!
- ASP.NET 5 Beta8 已经发布
- 【Hbase】HBase 更改表名
- Error Code : 1064 You have an error in your SQL syntax; check the manual that corresponds to your My
- python数据库操作——NoSQL数据库之连接MongoDB、Redis数据库
- etree解析xml_在python中使用Etree解析XML配置文件
- 论文阅读:FVQA: Fact-based Visual Question Answering
- bing搜索php,必应bing网页搜索小偷php程序 v1.0PHP小偷采集源码下载-华软网
- 一群参与境内外赌博网站的开发的程序员被抓,网友:切勿面向监狱编程。。。...
- upload组件代码执行成功却还是有报错提醒
- 什么是登陆器劫持登陆器劫持怎么办GOM引擎的登陆器会被劫持吗
- 如何备份MySQL数据库
- 谈谈wxHOOK为什么会限制
- git fatal: unable to access Failed to connect to localhost port 1080: Connection refused
- 借记/贷记交易处理流程
- 帮助文档—C4D反射通道
- win10 环境变量及其作用大全
热门文章
- 华为荣耀笔记本linux系统怎么样,荣耀笔记本和华为笔记本有什么区别
- java验证字符是否为字母_Java程序检查字符是否为字母
- html游动文字如何设置颜色,pr游动字幕怎么做
- HTML(Basic) Chapter4(Pink) 综合案例小米商城产品模块
- eclipse安装STS支持注意的坑
- 【板绘素材】漫画眼睛超超详细上色步骤~
- 加js库和css库| jQuery hover()用法 |document.onreadystatechange |get和post
- 三个常见博弈游戏以及 SG 函数和 SG 定理
- 编译android源码刷机到Nexus5x
- 周鸿祎:互联网成功十大案例