返回顶部
首页 > 资讯 > 后端开发 > Python >Python中怎么使用OpenCV实现腐蚀与膨胀
  • 143
分享到

Python中怎么使用OpenCV实现腐蚀与膨胀

2023-06-15 12:06:27 143人浏览 泡泡鱼

Python 官方文档:入门教程 => 点击学习

摘要

今天就跟大家聊聊有关python中怎么使用OpenCV实现腐蚀与膨胀,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。什么是形态学要了解腐蚀之前,我们需要了解一个概念:形态学。形态学,又

今天就跟大家聊聊有关python中怎么使用OpenCV实现腐蚀与膨胀,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

什么是形态学

要了解腐蚀之前,我们需要了解一个概念:形态学。

形态学,又名数学形态学(Mathematical Morphology),是图像处理过程中一个非常重要的研究方向。形态学主要从图像内提取分量信息,该分量信息通常对于表达和描绘图像的形状具有重要的意义,通常是图像理解时所使用的最本质的形状特征。

例如,在识别手写数字时,能够通过形态学运算得到其骨架信息,在具体的识别时,仅针对其骨架进行运算即可。形态学处理在视觉检测,文字识别,医学图像处理,图像压缩编码等领域都有非常重要的应用。

形态学操作主要包含:腐蚀,膨胀,开运算,闭运算,形态学梯度运算,顶帽运算,黑帽运算等操作。腐蚀操作与膨胀操作是形态学的运算基础,将腐蚀与膨胀结合,就可以实现开运算,闭运算,形态学梯度等不同形式的运算。

所以本篇博文将重点讲解腐蚀与膨胀。

腐蚀

腐蚀是最基本的形态学操作之一,它能够将图像的边界点消除,使图像沿着边界向内收缩,也可以将小于指定结构体元素的部分去除。腐蚀主要用来“收缩”或者“细化”二值图像中的前景,借此实现去噪声,元素分割等功能。

在腐蚀的过程中,通常使用一个结构元来逐个像素地扫描要被腐蚀的图像,并根据结构元和被腐蚀的图像的关系来确定腐蚀结果。

首先,我们来看一张腐蚀处理图:

Python中怎么使用OpenCV实现腐蚀与膨胀

(1)表示要被腐蚀的图像

(2)结构元

(3)橙色数字是结构元在遍历图像时,结构元完全位于前景对象内部时的3个全部可能的位置;此时,结构元分别位于img[2,1],img[2,2],img[2,3]处。

(4)腐蚀结果result,即在结构元完全位于前景图像中时,将其中心点所对应的result中的像素点的值置为1;当结构元不完全位于前景图像中时,将其中心点对应的result中的像素点置为0。(按位与)

在OpenCV中,使用函数cv2.erode()实现腐蚀操作,其完整定义如下:

def erode(src, kernel, dst=None, anchor=None, iterations=None, borderType=None, borderValue=None):

src:原始图像

kernel:结构元,可以自定义,也可以通过函数cv2.getStructuringElement()生成

iterations:腐蚀操作迭代的次数,默认为1,即只进行一次操作

至于其他参数以及取值,前面博文都有介绍,这里不在赘述。

下面,我们使用该函数来测试一下腐蚀的操作:

import cv2import numpy as npimg = cv2.imread("8.jpg",cv2.IMREAD_UNCHANGED)kernel = np.ones((9,9), np.float32)result = cv2.erode(img,kernel)cv2.imshow("img", img)cv2.imshow("result", result)cv2.waiTKEy()cv2.destroyAllwindows()

运行之后,我们得到的效果对比图如下:

Python中怎么使用OpenCV实现腐蚀与膨胀

可以看到,腐蚀操作将原始图像内的毛刺给腐蚀掉了,如果想腐蚀的更严重,可以设置iterations参数的值。

膨胀

膨胀与腐蚀正好相反,膨胀能对图像的边界进行扩张。膨胀操作将与当前的对象(前景)接触到的背景点合并到当前对象内,从而实现将图像边界点向外扩张。如果图像内的两个对象距离较近,可能在膨胀后连接到一起。

膨胀操作对填补图像分割后图像内所存在的空白相当有帮助。同样的,膨胀也需要一个结构元进行操作。下面,我们还是用矩阵来讲解膨胀的原理。

Python中怎么使用OpenCV实现腐蚀与膨胀

(1)待膨胀的原图

(2)结构元

(3)橙色部分是结构元遍历原图时,结构元中心像素点位于[1,1],img[3,3]时,与前景色存在重合像素点的两种情况,实际上共有9个这样的与前景对象重合的可能位置。结构元中心分别位于img[1,1],img[1,2],img[1,3],img[2,1],img[2,2],img[2,3],img[3,1],img[3,2],img[3,3]。

(4)膨胀后的结果图像result,在结构元内,当任意一个像素点与前景对象重合时,其中心点所对应的膨胀结果图像内的像素点的值为1;当结构元与前景对象完全无重合时,其中心点对应的膨胀结果图像内像素点的值为0。(按位或)

在OpenCV中,它给我们提供cv2.dilate()实现对图像的膨胀操作。其完整定义如下:

def dilate(src, kernel, dst=None, anchor=None, iterations=None, borderType=None, borderValue=None):

src:原始图像

kernel:结构元

其他参数与前文一致,不在赘述。下面,我们使用该函数测试膨胀的效果,具体代码如下所示:

import cv2import numpy as npimg = cv2.imread("8.jpg",cv2.IMREAD_UNCHANGED)kernel = np.ones((9,9), np.float32)result = cv2.dilate(img,kernel)cv2.imshow("img", img)cv2.imshow("result", result)cv2.waitKey()cv2.destroyAllWindows()

运行之后,效果如下所示:

Python中怎么使用OpenCV实现腐蚀与膨胀

看完上述内容,你们对Python中怎么使用OpenCV实现腐蚀与膨胀有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注编程网Python频道,感谢大家的支持。

--结束END--

本文标题: Python中怎么使用OpenCV实现腐蚀与膨胀

本文链接: https://lsjlt.com/news/280094.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Python中怎么使用OpenCV实现腐蚀与膨胀
    今天就跟大家聊聊有关Python中怎么使用OpenCV实现腐蚀与膨胀,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。什么是形态学要了解腐蚀之前,我们需要了解一个概念:形态学。形态学,又...
    99+
    2023-06-15
  • OpenCV-Python实现腐蚀与膨胀的实例
    目录什么是形态学腐蚀膨胀什么是形态学 要了解腐蚀之前,我们需要了解一个概念:形态学。 形态学,又名数学形态学(Mathematical Morphology),是图像处理过程中一个非...
    99+
    2024-04-02
  • OpenCV图像处理之实现图像膨胀腐蚀操作
    目录一.形态学操作概念二.形态学操作-膨胀膨胀函数API接口结构元素的API函数接口三.形态学操作—腐蚀腐蚀原理腐蚀函数API接口图像处理效果一.形态学操作概念 图像形态...
    99+
    2024-04-02
  • C++ Opencv自写函数实现膨胀腐蚀处理技巧
    目录一、膨胀腐蚀学习笔记二、代码及结果分享三、注意事项3.1A.dot(B)3.2A.mul(B)一、膨胀腐蚀学习笔记 二、代码及结果分享 #include <openc...
    99+
    2024-04-02
  • C++ opencv图像处理实现图像腐蚀和膨胀示例
    目录1 概念2 膨胀3 腐蚀1 概念 1.1 腐蚀跟膨胀是最基本的形态学运算 1.2 腐蚀跟膨胀是对图像的白色的部分(亮光部分)进行操作 1.3 腐蚀是对亮光部分进行腐蚀 拥有比原图...
    99+
    2024-04-02
  • Java中的synchronized锁膨胀机制怎么实现
    这篇文章主要讲解了“Java中的synchronized锁膨胀机制怎么实现”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Java中的synchronized锁膨胀机制怎么实现”吧!synch...
    99+
    2023-06-30
  • 怎么用pytorch膨胀算法实现大眼效果
    本篇内容主要讲解“怎么用pytorch膨胀算法实现大眼效果”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么用pytorch膨胀算法实现大眼效果”吧!算法思路:以眼睛中心为中心点,对眼睛区域向外...
    99+
    2023-06-21
  • python中怎么使用opencv实现阈值分割
    在Python中使用OpenCV实现阈值分割可以按照以下步骤进行:1. 导入OpenCV库:```pythonimport cv2`...
    99+
    2023-08-15
    python opencv
  • 怎么在python中使用opencv实现视频抽帧
    怎么在python中使用opencv实现视频抽帧,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。1、数据集简述:    &...
    99+
    2023-06-15
  • 怎么在Python中使用OpenCV
    这篇文章给大家介绍怎么在Python中使用OpenCV,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。OpenCVOpenCV是计算机视觉中最受欢迎的库,最初由intel使用C和C ++进行开发的,现在也可以在pytho...
    99+
    2023-06-14
  • 使用python与opencv怎么实现一个运动检测器功能
    使用python与opencv怎么实现一个运动检测器功能?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。Python主要用来做什么Python主要应用于:1、We...
    99+
    2023-06-06
  • python中怎么用opencv实现影像拼接
    这篇文章主要介绍“python中怎么用opencv实现影像拼接”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“python中怎么用opencv实现影像拼接”文章能帮助大家解决问题。1.垂直影像拼接 v...
    99+
    2023-06-29
  • python怎么使用OpenCV实现多目标跟踪
    这篇文章主要介绍“python怎么使用OpenCV实现多目标跟踪”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“python怎么使用OpenCV实现多目标跟踪”文章能帮助大家解决问题。1 背景介绍计算...
    99+
    2023-06-30
  • 怎么在Python中使用OpenCV实现轮廓的特征值
    本篇文章给大家分享的是有关怎么在Python中使用OpenCV实现轮廓的特征值,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。宽高比在轮廓中,我们可以通过宽高比来描述轮廓,例如矩...
    99+
    2023-06-15
  • Python中OpenCV图像平移怎么实现
    小编给大家分享一下Python中OpenCV图像平移怎么实现,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!每次学习新东西的时候,橡皮擦都是去海量检索,然后找到适合...
    99+
    2023-06-15
  • OpenCV中怎么使用GrabCut实现抠图功能
    这篇文章主要讲解了“OpenCV中怎么使用GrabCut实现抠图功能”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“OpenCV中怎么使用GrabCut实现抠图功能”吧!1、概述grabCut...
    99+
    2023-07-05
  • 怎么在python中使用OpenCV画图
    怎么在python中使用OpenCV画图?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。python有哪些常用库python常用的库:1.requesuts;2....
    99+
    2023-06-14
  • 怎么用Python+OpenCV实现猫脸检测
    这篇文章主要介绍了怎么用Python+OpenCV实现猫脸检测的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇怎么用Python+OpenCV实现猫脸检测文章都会有所收获,下面我们一起来看看吧。开发工具Pytho...
    99+
    2023-06-27
  • 怎么使用Python和OpenCV实现在线打乒乓球
    本篇内容介绍了“怎么使用Python和OpenCV实现在线打乒乓球”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!捕捉屏幕第一件事就是捕捉屏幕...
    99+
    2023-06-16
  • 如何在Python中使用OpenCV实现油画效果
    本篇文章为大家展示了如何在Python中使用OpenCV实现油画效果,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。油画的实现原理油画简单的理解是带有艺术感的图像,色彩相对于原图要更加鲜艳,但却是失真...
    99+
    2023-06-15
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作