python+OpenCV图像处理(十二)车牌定位中对图像的形态学组合操作处理

车牌定位中对图像的形态学组合操作处理

所谓的车牌定位,其中最关键的部分就是对图片的处理,参数的设置,并使之拥有泛化能力。

首先传入图片,在进行大规模的图片处理时,因为无法确定图片的尺寸,所以需要将原始图片进行等比例的缩放。

orgimg = cv2.imread('chepai3.jpg')
# 压缩图像
img = cv2.resize(orgimg, (400, int(400 * img.shape[0] / img.shape[1])))

对图像的操作是在灰度图上进行的,所以将图像转为灰度图

# 灰度图
grayimg = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
cv2.imshow('grayimg', grayimg)

 对灰度图图像像素进行拉伸,使图片的像素值拉伸到整个像素空间,提高图像像素的对比度

# 像素拉伸
def stretch(img):max_ = float(img.max())min_ = float(img.min())for i in range(img.shape[0]):for j in range(img.shape[1]):img[i, j] = (255 / (max_ - min_)) * img[i, j] - (255 * min_) / (max_ - min_)return img
stretchedimg = stretch(grayimg)
cv2.imshow('stretchedimg', stretchedimg)

开运算是指图像先进行腐蚀再膨胀的运算,所以对图像进行开运算可以去除图像中的一些噪声

    # 先定义一个元素结构r = 16h = w = r * 2 + 1kernel = np.zeros((h, w), dtype=np.uint8)cv2.circle(kernel, (r, r), r, 1, -1)# 开运算openingimg = cv2.morphologyEx(stretchedimg, cv2.MORPH_OPEN, kernel)

然后,获取两个图像之间的差分图,OpenCV中提供了一个函数cv2.absdiff(),这个函数可以把两幅图的差的绝对值输出到另一幅图上面来,利用这种办法可以去除图片中的大面积噪声。

# 获取差分图
strtimg = cv2.absdiff(stretchedimg, openingimg)

边缘检测的目的是标识数字图像中亮度变化明显的点,所以,利用边缘检测可提高对图像有效信息的感知能力

# 在对图像进行边缘检测之前,,先对图像进行二值化
binary_img = dobinaryzation(strtimg)
# 使用Canny函数做边缘检测
cannyimg = cv2.Canny(binary_img, binary_img.shape[0], binary_img.shape[1])

 最后,再经过一系列的形态学组合操作,使图像能够满足定位的需要

# 进行闭运算
kernel = np.ones((5, 19), np.uint8)
closing_img = cv2.morphologyEx(cannyimg, cv2.MORPH_CLOSE, kernel)
# 进行开运算
opening_img = cv2.morphologyEx(closing_img, cv2.MORPH_OPEN, kernel)
# 再次进行开运算
kernel = np.ones((11, 5), np.uint8)
opening_img = cv2.morphologyEx(opening_img, cv2.MORPH_OPEN, kernel)
# 膨胀
kernel_2 = cv2.getStructuringElement(cv2.MORPH_RECT, (5, 5))
kernel_dilated = cv2.dilate(opening_img, kernel_2)

形态学组合操作的目的是去除图像中小区域噪声,保留大块的区域,从而定位车牌。

 最终通过轮廓检测确定图像处理后的区域,并找出轮廓的左上点和右下点,来计算它的面积和长宽比,最后根据面积和图像背景颜色,来判断出车牌的区域,并画出矩形框。

这是最终的处理结果:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/490811.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ACL 2019 知识图谱的全方位总结

来源:AI科技评论翻译 | 栗峰  审校 | Camel编辑 | Pita ACL 2019已经结束,但其空前的规模仍然震撼人心:2900多篇提交论文,660篇被接收,3000多名会议注册人员,以及4个超过400人的研讨会(比一些…

word只在第一页插入页眉

首先点击插入>页眉 在设计栏中勾上“首页不同”,如下所示:

Redis应用场景(转)

(来源:http://www.cnblogs.com/shanyou/archive/2012/09/04/2670972.html) Redis常用数据类型 Redis最为常用的数据类型主要有以下五种: StringHashListSetSorted set在具体描述这几种数据类型之前,我们先通过一张图了解下Redis内部内存管理中…

word删除页眉下面的横线

首先点击插入>页眉,输入页眉后,选中页眉内容: 点击“设计”栏: 点击页面边框: 然后按如下设置即可消除页眉下面的横线

TensorFlow 多任务学习

多任务学习 多任务学习,顾名思义,就是多个任务模型同时执行,进行模型的训练,利用模型的共性部分来简化多任务的模型,实现模型之间的融合与参数共享,可以在一定程度上优化模型的运算,提高计算机…

【工业互联网】全球工业互联网十大最具成长性技术展望(2019-2020年)

来源:中国工业互联网研究院来源:中国工业互联网研究院全球工业互联网十大最具成长性技术展望(2019-2020年)工业互联网工业互联网是第四次工业革命的重要基石,在世界范围已步入发展快车道,正处于面临重大突破…

win10调节屏幕亮度_自动调节电脑屏幕亮度软件,保护你的眼睛

本文共514个字,预计用时2分钟小伙伴们,今天给大家分享一个小软件,名字叫做 EyeCareApp,中文名:护眼软件EyeCareApp是一款能够调节屏幕亮度的软件,它可以调整屏幕亮度,滤除蓝光,有效减…

UIAlertAction添加输入框

* UIAlertController & UIAlertAction * 1. 在iOS8中,我们失去了两个非常简单的控件,那就是UIAlertView、UIActionSheet,取而代之的是UIAlertController和UIAlertAction * 2. 在iOS8中,UIAlertController控件使用两种样式代…

国家计划统筹布局哪些人工智能创新平台?

来源:智造智库建设布局人工智能创新平台,是强化对人工智能研发应用的基础支撑。未来,国家层面计划大力促进各类通用软件和技术平台的开源开放,且按照军民深度融合的要求和相关规定,推进军民共享共用。人工智能开源软硬…

install package vif包_2019-10-03【百宝箱】如何使用wireshark实时远程抓取openwrt路由器包...

前言经常遇到问题的时候需要抓取wifi数据包,常用的做法有三种:1、使用 专用网卡omnipeekwindows软件抓包2、使用 macbook pro的airtool软件抓包3、在路由器上使用tcpdump除了omnipeek 其他都不能实时操作。如何结合openwrt来达到远程实时抓包呢&#xff…

CNN中的卷积操作与权值共享

CNN中非常有特点的地方就在于它的局部连接和权值共享,通过卷积操作实现局部连接,这个局部区域的大小就是滤波器filter,避免了全连接中参数过多造成无法计算的情况,再通过参数共享来缩减实际参数的数量,为实现多层网络提…

python根据矩阵数值大小涂上不同深浅颜色

绘制矩阵颜色图 import matplotlib.pyplot as pltplt.matshow(np.random.rand(5,5), cmapplt.get_cmap(Greens), alpha0.5) # , alpha0.3 plt.show()

20150210--Smarty1-02

20150210--Smarty1-02 三、设计篇 1、Smarty注释 基本语法: {*注释内容*} 示例代码: 2、Smarty中的变量 1)从PHP中分配的变量(普通的变量、数组、对象) 基本语法: $smarty->assign(); 示例代码: demo02.php demo02.html 运行效…

python 绘制时频图 plt.specgram

时频图以横轴为时间,纵轴为频率,用颜色表示幅值。在一幅图中表示信号的频率、幅度随时间的变化 matplotlib.pyplot.specgram(x, NFFTNone, FsNone, FcNone, detrendNone, windowNone, noverlapNone, cmapNone, xextentNone, pad_toNone, sidesNone, s…

UserWarning: The default mode, 'constant', will be changed to 'reflect'

问题:UserWarning: The default mode, constant, will be changed to reflect in skimage 0.15. warn("The default mode, constant, will be changed to reflect in " skimage.transform.resize(image, output_shape, order1, modeNone, cval0, clipT…

华为鸿蒙系统四大特性:基于微内核,面向全场景,分布式架构

来源:今日头条8月9日,在广东东莞召开的华为开发者大会上,华为正式发布了自研操作系统:鸿蒙OS。据华为消费者业务CEO、华为技术有限公司常务董事余承东介绍,鸿蒙OS是基于微内核的面向全场景的分布式操作系统。随着华为全…

HTML5 音频视频

audio 元素能够播放声音文件或者音频流。 <!DOCTYPE html> <html> <head lang"en"><meta charset"utf-8"><title>HTML5 音频播放</title> </head> <body><!-- audio&#xff08;音频&#xff09;contr…

VM虚拟机中 localhost login_UTM 2.0 虚拟机来了,解决上网和无声音问题

今天主要讲一下UTM虚拟机&#xff0c;如果你对UTM这款APP不太熟悉&#xff0c;我在这里大致讲一下&#xff0c;这款应用工具&#xff0c;它可以安装在 iPad 和 iPhone 上刷入电脑系统&#xff0c;举例子&#xff1a;在UTM中刷入win7系统。甚至还能刷入 Android 安卓系统&#x…

python计算ROC曲线和面积AUC

ROC曲线是根据一系列不同的二分类方式&#xff08;分界值或决定阈&#xff09;&#xff0c;以真正率&#xff08;也就是灵敏度&#xff09;&#xff08;True Positive Rate,TPR&#xff09;为纵坐标&#xff0c;假正率&#xff08;1-特效性&#xff09;&#xff08;False Posit…

python from __future__ import division

python from __future__ import division 之前一直很困惑&#xff0c;为什么这个模块叫future呢&#xff0c;难道有什么特殊功能能够让人们想到未来吗&#xff0c;最近才恍然大悟。 python的更新和前进是由社区进行推动的&#xff0c;而且是免费开源的&#xff0c;不受大型…