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

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

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

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)

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

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

这是最终的处理结果:

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

  1. OpenCV图像处理(十二)---图像阈值化

    如果两个热力学系统中的每一个都与第三个热力学系统处于热平衡(温度相同),则它们彼此也必定处于热平衡.这一结论称做"热力学第零定律".又称热平衡定律,是热力学的四条基本定律之一,是一 ...

  2. python+OpenCV图像处理(二)图像像素的访问、通道的合并与分离

    图像像素的访问.通道的合并与分离 (一)像素访问 在第一篇博客中,向大家介绍了,所谓的图像在计算机看来就是一个矩阵,对于RGB图像矩阵一共有三层,分别代表着RGB通道,矩阵中每一个数的大小代表着不同通 ...

  3. Python+OpenCV图像处理(二)——打印图片属性、设置图片存储路径、电脑摄像头的调取和显示...

    一. 打印图片属性.设置图片存储路径 代码如下: #打印图片的属性.保存图片位置 import cv2 as cv import numpy as np #numpy是一个开源的Python科学计算库 ...

  4. Python+OpenCV图像处理(五)——图像阈值和二值化

    系列文章 Python+OpenCV图像处理(一)--OpenCV框架与图像插值算法 Python+OpenCV图像处理(二)--几何变换 Python+OpenCV图像处理(三)--彩色空间互换 P ...

  5. 《OpenCv视觉之眼》Python图像处理十二 :Opencv图像轮廓提取之基于一阶导数的Roberts算法、Prewitt算法及Sobel算法

    本专栏主要介绍如果通过OpenCv-Python进行图像处理,通过原理理解OpenCv-Python的函数处理原型,在具体情况中,针对不同的图像进行不同等级的.不同方法的处理,以达到对图像进行去噪.锐 ...

  6. Python+Opencv图像处理新手入门教程(二):颜色空间转换,图像大小调整,灰度直方图

    一步一步来吧 上一节:Python+Opencv图像处理新手入门教程(一):介绍,安装与起步 1.什么是图像 对于计算机而言,图像的本质是一个由像素点构成的矩阵. 例如我们用肉眼很容易分辨一辆汽车的后 ...

  7. Python+Opencv图像处理新手入门教程(三):阈值与二值化

    一步一步来吧 上一节: Python+Opencv图像处理新手入门教程(二):颜色空间转换,图像大小调整,灰度直方图 1.Intro 今天这节我们主要研究利用阈值处理图像.例如对于输入图像: 如何做一 ...

  8. python+OpenCV笔记(二十四):Shi-Tomasi角点检测

    Shi-Tomasi角点检测 原理 python+OpenCV笔记(二十二):角点检测原理(Harris角点检测原理.Shi-Tomasi角点检测原理)https://blog.csdn.net/qq ...

  9. [Python图像处理] 十二.图像几何变换之图像仿射变换、图像透视变换和图像校正

    该系列文章是讲解Python OpenCV图像处理知识,前期主要讲解图像入门.OpenCV基础用法,中期讲解图像处理的各种算法,包括图像锐化算子.图像增强技术.图像分割等,后期结合深度学习研究图像识别 ...

最新文章

  1. 【转载】pycharm远程调试配置
  2. Python和JavaScript之间的JSON日期时间
  3. 面向程序员的数据库访问性能优化法则
  4. MyBatis-Plus selectMapsPage报错
  5. 初学Spring Boot
  6. 01 离散时间信号的时域表示
  7. python搭建邮件服务器地址_python 配置邮件发送服务器发送邮件
  8. VC实现文件拖拽获取文件名
  9. 学无止境的 Linux | 龙蜥开发者说第4期
  10. asp.net+扫描仪+图片上传
  11. 百度编辑器ueditor表格无法显示边框以及边框颜色等系列问题解决方案
  12. 在线教会你Excel批量转PDF的小妙招
  13. 【IT人物】周杰(清华,耶鲁):Google技术总监周杰创业“死海”淘金
  14. iOS应用程序的辅助功能:辅助功能检查器
  15. 【四足机器人那些事】足端轨迹规划(一)
  16. vue + scss,文本超过多行需要省略号,不起作用
  17. iphone app中读取本地txt,csv文件 转载
  18. 每日影视大全隐私政策
  19. 企业级购物车实现思路
  20. Linux----vim、账号管理、进程管理、磁盘管理、java环境安装

热门文章

  1. linux软件包管理 pdf,vSphere Storage Appliance 安装和管理 PDF
  2. python 保存文件 吃内存_孤荷凌寒自学python第三十七天python的文件与内存变量之间的序列化与反序列化...
  3. 美团数据库运维自动化系统构建之路
  4. 论文浅尝 | Generative QA: Learning to Answer the Whole Question
  5. Android官方开发文档Training系列课程中文版:调用相机之控制相机
  6. 推荐系统中的Embedding
  7. yii2的Console定时任务创建
  8. python28 excel读取模块xlrd
  9. 事件(二):事件处理程序
  10. NodeJs系列二:你好,世界