【Python】【Opencv】形态学操作cv2.morphologyEx()函数详解和示例,实现腐蚀、膨胀、闭和开等运算

这篇具有很好参考价值的文章主要介绍了【Python】【Opencv】形态学操作cv2.morphologyEx()函数详解和示例,实现腐蚀、膨胀、闭和开等运算。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

常用的形态学操作如腐蚀、膨胀、开运算、闭运算等,可以帮助我们解决一下图像不连接或消除图像中某些不想要的连接,对于图像处理使用方便,效果明显。本文通过示例对这些功能和效果进行演示,以帮助大家理解和使用。

cv2.morphologyEx()函数详解

cv2.morphologyEx 是 OpenCV 中的一个函数,用于执行形态学操作,如腐蚀、膨胀、开运算、闭运算等。这个函数的基本语法如下:

retval, dst = cv2.morphologyEx(src, op, kernel[, dst[, anchor]])

参数:
src:源图像,必须是单通道的灰度图像。
op:形态学操作的类型,可以是以下几种:
cv2.MORPH_ERODE:腐蚀操作。
cv2.MORPH_DILATE:膨胀操作。
cv2.MORPH_OPEN:开运算。
cv2.MORPH_CLOSE:闭运算。
cv2.MORPH_GRADIENT:形态学梯度。
cv2.MORPH_TOPHAT:原图像减去膨胀的图像。
cv2.MORPH_HITMISS:结构元素对应的点集比较。
kernel:形态学操作的核,通常是一个矩形、椭圆或十字形的小矩阵。核的大小可以是正奇数。
dst(可选):输出图像,如果未指定,则函数会创建一个新的输出图像。
anchor(可选):核的锚点,默认是核的中心。

如上面op参数不同功能不同,我们可以改变op的参数以实现不同的功能。

腐蚀操作

腐蚀操作在图像处理中具有多种应用,其主要作用是消除图像中的噪声、细化对象、断开连接的对象等。腐蚀操作通过逐渐消除边界上的像素点,使图像向中心收缩,从而达到消除噪声、断开连接对象的效果。

import cv2
import numpy as np

# 读取图像
img = cv2.imread('1.jpg', 0)

# 定义核
kernel = np.ones((9,9), np.uint8)
eroded = cv2.morphologyEx(img, cv2.MORPH_ERODE, kernel)
# 腐蚀操作
#eroded = cv2.erode(img, kernel)

# 显示结果
cv2.imshow('Original', img)
cv2.imshow('Erosion', eroded)
cv2.waitKey(0)
cv2.destroyAllWindows()

注意,这里kernel值设置直接影响最后的结果,下面改变不同的核值,以对比其效果。
python cv.morphologyex,Python学习和使用过程积累,python,opencv,开发语言,计算机视觉,人工智能
上图为原图
python cv.morphologyex,Python学习和使用过程积累,python,opencv,开发语言,计算机视觉,人工智能
上图左边为33核大小腐蚀结果,右边为99核大小腐蚀结果。可以看出,核变大之后效果更明显,尤其是在图像上端,比较尖的区域。

膨胀

图像中每个像素与一个结构元素进行卷积来完成的。膨胀操作可以使前景区域扩张,填充空洞和连接断裂的区域

主要代码与腐蚀相同,将cv2.MORPH_ERODE替换为cv2.MORPH_DILATE

DILATE33 = cv2.morphologyEx(img, cv2.MORPH_DILATE, kernel33)

kernel的值进行自定义即可,在此处使用两个数值进行对比。

kernel1515 = np.ones((15,15), np.uint8)
kernel33 = np.ones((3,3), np.uint8)

原图如下:
python cv.morphologyex,Python学习和使用过程积累,python,opencv,开发语言,计算机视觉,人工智能

效果图

进行膨胀操作,下图左边核大小为33,右边为1515.
python cv.morphologyex,Python学习和使用过程积累,python,opencv,开发语言,计算机视觉,人工智能
可以看出,卷积核越大,连接的效果越好,但也会把中间部分进行连接。

开运算和闭运算是腐蚀和膨胀的组合操作,只是进行的顺序不同,实现的效果也不同。

开运算

先进行腐蚀运算,再进行膨胀运算。开运算的效果是能够除去孤立的小点、毛刺和小桥,而总的位置和形状不便。开运算是一个基于几何运算的滤波器,结构元素大小的不同将导致滤波效果的不同。
替换代码中的

cv2.morphologyEx(img, cv2.MORPH_DILATE, kernel33)

效果图

左边为33的核大小效果,右边为1515的核大小效果。
python cv.morphologyex,Python学习和使用过程积累,python,opencv,开发语言,计算机视觉,人工智能
可以看出当核为33时效果不明显,而值为1515时已经把连接较少的地方直接断开。

闭运算

先进行膨胀运算,再进行腐蚀运算。闭运算的效果是能够填平小湖(即小孔)、弥合小裂缝,而总的位置和形状不变。闭运算是通过填充图像的凹角来滤波图像的,结构元素大小的不同将导致滤波效果的不同。

python cv.morphologyex,Python学习和使用过程积累,python,opencv,开发语言,计算机视觉,人工智能
上图左边为33的核大小,右边为1515的核大小。

下图中,左边为2121的核大小,右边为2525的核大小,可以看出随着核大小的增大,连接的效果在变好。
python cv.morphologyex,Python学习和使用过程积累,python,opencv,开发语言,计算机视觉,人工智能

总结

不同的操作和运算对图像的处理不同,但相应的核大小要根据自己的项目和应用设置,设置不当也会影响其效果。文章来源地址https://www.toymoban.com/news/detail-835967.html

到了这里,关于【Python】【Opencv】形态学操作cv2.morphologyEx()函数详解和示例,实现腐蚀、膨胀、闭和开等运算的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Python轮廓追踪【OpenCV形态学操作】

    一些理论知识 OpenCV形态学操作理论1 OpenCV形态学操作理论2 OpenCV轮廓操作|轮廓类似详解 代码如下,可以直接运行

    2024年02月22日
    浏览(52)
  • python-opencv之形态学操作(腐蚀和膨胀)原理详解

    Removing noise. Isolation of individual elements and joining disparate elements in an image. Finding of intensity bumps or holes in an image. 最基本的形态操作是侵蚀和扩张。让我们更详细地了解这些操作。 原理 它会侵蚀前景物体的边界,并从图像中移除小规模的细节,但同时会减少感兴趣区域的大小。

    2024年02月05日
    浏览(50)
  • OpenCV之形态学操作

    形态学操作包含以下操作: 腐蚀 (Erosion) 膨胀 (Dilation) 开运算 (Opening) 闭运算 (Closing) 形态梯度 (Morphological Gradient) 顶帽 (Top Hat)黑帽(Black Hat) 其中腐蚀和膨胀操作是最基本的操作,其他操作由这两个操作变换而来。         用一个结构元素扫描图像中每一个像素,结构元素

    2024年02月09日
    浏览(51)
  • OpenCV(三十一):形态学操作

    ​​​​​​1.形态学操作        OpenCV 提供了丰富的函数来进行形态学操作,包括腐蚀、膨胀、开运算、闭运算等。下面介绍一些常用的 OpenCV 形态学操作函数: 腐蚀操作(Erosion): erode(src, dst, kernel, anchor, iterations, borderType, borderValue) 该函数对输入图像中的前景区域进行

    2024年02月09日
    浏览(52)
  • OpenCV17-图像形态学操作

    图像腐蚀(Image erosion)可用于减小图像中物体的大小、填充孔洞或者分离邻近的物体。腐蚀操作通过对图像中的每个像素应用结构元素(也称为腐蚀内核)来实现。 腐蚀操作的原理是将结构元素与图像进行逐像素的比较。如果结构元素的所有像素与图像中对应位置的像素都

    2024年02月08日
    浏览(50)
  • OpenCV快速入门:图像形态学操作

    图像形态学是一门强大而有趣的技术,它通过对图像进行形态学操作,使图像更适合后续处理步骤。在本文中,我们将深入探讨OpenCV中的图像形态学操作,快速入门这一关键领域。 图像形态学作为数字图像处理的一个分支,致力于通过形态学操作实现对图像特征的提取、噪音

    2024年02月05日
    浏览(97)
  • Opencv | 图像卷积与形态学变换操作

    在每个图像位置(x,y)上进行基于邻域的函数计算,其中函数参数被称为卷积核 (kernel) kernel核的尺寸通常为奇数,一般为: 3 ∗ 3 、 5 ∗ 5 、 7 ∗ 7 3*3、5*5、7*7 3 ∗ 3 、 5 ∗ 5 、 7 ∗ 7 不同功能需要定义不同的函数,其中功能可以有: 图像增强:           平滑 / 去

    2024年04月23日
    浏览(41)
  • C++OpenCV(7):图像形态学基础操作

    🔆 文章首发于我的个人博客:欢迎大佬们来逛逛 🔆 OpenCV项目地址及源代码:点击这里 膨胀与腐蚀是 数学形态学在图像处理中最基础的操作 。 膨胀操作是取 每个位置领域内最大值 ,所以膨胀后输出图像的总体亮度的平均值比起原图会有所升高,图像中比较亮的区域的面

    2024年02月16日
    浏览(50)
  • 【OpenCv • c++】形态学技术操作 —— 腐蚀与膨胀

    🚀 个人简介:CSDN「 博客新星 」TOP 10 , C/C++ 领域新星创作者 💟 作    者: 锡兰_CC ❣️ 📝 专    栏: 【OpenCV • c++】计算机视觉 🌈 若有帮助,还请 关注➕点赞➕收藏 ,不行的话我再努努力💪💪💪

    2024年02月04日
    浏览(49)
  • OPENCV C++(四)形态学操作+连通域统计

    第一个是形状 第二个是卷积核大小 tips:这些都是针对于二值化图像操作的 单独的也有 例如腐蚀函数 这个-1 -1是默认的 不变 2是做两次腐蚀的意思 先定义返回的值 stats :记录了每个连通区域的信息,是一个5列的矩阵,每一行对应一个连通区域,分别为连通区域外接矩形的

    2024年02月14日
    浏览(54)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包