iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Python OpenCV形态学运算示例分析
  • 926
分享到

Python OpenCV形态学运算示例分析

2023-06-29 22:06:15 926人浏览 安东尼

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

摘要

今天小编给大家分享一下python OpenCV形态学运算示例分析的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。1

今天小编给大家分享一下python OpenCV形态学运算示例分析的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。

1. 腐蚀 & 膨胀

1.1什么是腐蚀&膨胀

腐蚀&膨胀是图像形态学中的两种核心操作

腐蚀可以描述为是让图像沿着自己的边界向内收缩

而膨胀则刚好与收缩相反,可以描述为是让图像沿着边界向内扩张。

这两种操作的逻辑和作用都和上篇讲到的使用滤波器做平滑处理有些类似,不同之处在于,腐蚀求的是滤波核内像素的最小值,而膨胀求的是最大值。并将计算出的值复制给锚点位置的像素。

作用上同平滑处理类似,可以消除噪声。

因为腐蚀求的是最小值,膨胀求的是最大值,所以经过腐蚀操作的图像的总体亮度会有所降低,而经过膨胀操作的图像的总体亮度会有所升高。

为方便示例,准备以下图片素材(test1.jpg):

Python OpenCV形态学运算示例分析

1.2 腐蚀方法 cv2.erode()

Python中OpenCV使用cv2.erode()方法实现腐蚀操作。

该方法语法如下:

cv2.erode(src, kernel, anchor=None, iterations=None, borderType=None, borderValue=None)

  • scr 原图像

  • kernel 腐蚀要用到的核

  • anchor 锚点

  • iterations 可选参数,腐蚀操作的迭代次数,默认为1。

  • borderType 边界样式,可选。

  • borderValue 边界值,可选。

其中kernel这个参数,核,需要手动取创建一个数组,而不能是像滤波器那样指定一个大小。

import cv2import numpy as npimg = cv2.imread("test1.jpg")# 创建3*3的数组作为滤波核k = np.ones((3, 3), np.uint8)dst = cv2.erode(img, k)cv2.imshow("dst", dst)cv2.waiTKEy()cv2.destroyAllwindows()

腐蚀效果如下,如图,我们的鱼骨显得年代更久远了,鱼刺消失、变暗了相当一部分。

Python OpenCV形态学运算示例分析

1.3 膨胀方法 cv2.dilate()

python中OpenCV使用cv2.dilate()方法实现膨胀操作。

该方法语法如下:

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

可以看出,其参数用法同cv2.erode()的参数。

import cv2import numpy as npimg = cv2.imread("test1.jpg")# 创建16*16的数组作为核k = np.ones((16, 16), np.uint8)dst = cv2.dilate(img, k)cv2.imshow("dst", dst)cv2.waitKey()cv2.destroyAllWindows()

膨胀效果如下,如图所示,图片众多鱼的亮度明显变高了。

Python OpenCV形态学运算示例分析

这种图像效果,也被称之为“近视眼”效果。

2. 开运算 & 闭运算

2.1 简述

开运算就是将图像先进性腐蚀操作,再进行膨胀操作。其可以用来抹除图像外部的细节(噪声)。

闭运算则与之相反

闭运算是先对图像进行膨胀操作,在进行腐蚀操作。其可以用来抹除图像的内部细节(噪声)。

腐蚀和膨胀虽然是逆操作,但是开运算和闭运算都不会使图像恢复原状。

2.2 开运算

以 3 为核

代码示例如下

import cv2import numpy as npimg = cv2.imread("test1.jpg")k = np.ones((3, 3), np.uint8)dst = cv2.erode(img, k)dst = cv2.dilate(dst, k)cv2.imshow("dst", dst)cv2.waitKey()  cv2.destroyAllWindows()

Python OpenCV形态学运算示例分析

2.3 闭运算

以 10 为核

代码示例如下

import cv2import numpy as npimg = cv2.imread("test1.jpg")k = np.ones((10, 10), np.uint8)dst = cv2.dilate(img, k)dst = cv2.erode(dst, k)cv2.imshow("dst", dst)cv2.waitKey()cv2.destroyAllWindows()

Python OpenCV形态学运算示例分析

3. morphologyEx()方法

3.1 morphologyEx()方法 介绍

在python中OpenCV还提供了morphologyEx()方法(形态学方法),可以用来完成所有常用的形态学运算。

morphologyEx()语法如下:

morphologyEx(src, op, kernel, dst=None, anchor=None, iterations=None, borderType=None, borderValue=None)

其中

  • scr 表示图像

  • op 表示操作类型

  • kernel 表示 核

  • anchor 表示锚点

  • iterations 为迭代次数,默认为1

  • borderType 是边界样式,默认1

  • borderValue 是边界值,默认1

可以供op选择的操作类型有:

参数值描述
cv2.MORPH_ERODE腐蚀
cv2.MORPH_DILATE膨胀
cv2.MORPH_ OPEN开运算,先腐蚀后膨胀
cv2.MORPH_CLOSE闭运算,先膨胀后腐蚀
cv2.MORPH_GRADIENT梯度运算,膨胀图减腐蚀图
cv2.MORPH_TOPHAT顶帽运算,原始图减开运算图
cv2.MORPH_BLACKHAT黑帽运算,闭运算图,减开运算图

接下来我们使用图片"test2.jpg"(下图)来继续下边的示例:

Python OpenCV形态学运算示例分析

3.2 梯度运算

对“test2.jpg”以 4 为核做梯度运算:

import cv2import numpy as npimg = cv2.imread("test2.jpg")  k = np.ones((4, 4), np.uint8)  dst = cv2.morphologyEx(img, cv2.MORPH_GRADIENT, k) cv2.imshow("dst", dst)  cv2.waitKey()  cv2.destroyAllWindows()

梯度运算,即膨胀图减去腐蚀图,因为膨胀运算得到的图像中我物体比原图中的“大”,而腐蚀运算得到的图像中的物体是收缩过的,比原图中的“小”,所以膨胀的结果减去腐蚀的结果,会得到一个大概的、不精准的轮廓。

test2.jpg梯度运算执行效果如下:

Python OpenCV形态学运算示例分析

3.3 顶帽运算

对“test2.jpg”以 4 为核做顶帽运算:

import cv2import numpy as npimg = cv2.imread("test2.jpg")k = np.ones((4, 4), np.uint8)cv2.imshow("img", img)dst = cv2.morphologyEx(img, cv2.MORPH_TOPHAT, k)cv2.imshow("dst", dst)cv2.waitKey()cv2.destroyAllWindows()

顶帽运算,即原图减去开运算图,因为开运算抹除了图像的外部细节,所以顶帽运算即“有外部细节的图像 减去 无外部细节的图像”,得到的结果也就只剩外部细节了。

顶帽运算处理效果如下:

Python OpenCV形态学运算示例分析

3.4 黑帽运算

对“test2.jpg”以 4 为核做顶帽运算:

import cv2import numpy as npimg = cv2.imread("test2.jpg")k = np.ones((4, 4), np.uint8)dst = cv2.morphologyEx(img, cv2.MORPH_BLACKHAT, k)cv2.imshow("dst", dst)cv2.waitKey()cv2.destroyAllWindows()

黑帽运算,即原图像的闭运算减去原图像

因为闭运算可以抹除图像的内部细节,所以黑帽运算即 “无内部细节的图像减去有内部细节的图像”,结果只剩下内部细节。

黑帽运算处理效果如下:

Python OpenCV形态学运算示例分析

以上就是“Python OpenCV形态学运算示例分析”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注编程网Python频道。

--结束END--

本文标题: Python OpenCV形态学运算示例分析

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

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

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Python OpenCV形态学运算示例分析
    今天小编给大家分享一下Python OpenCV形态学运算示例分析的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。1...
    99+
    2023-06-29
  • Python OpenCV形态学运算示例详解
    目录1. 腐蚀 & 膨胀1.1什么是腐蚀&膨胀1.2 腐蚀方法 cv2.erode()1.3 膨胀方法 cv2.dilate()2. 开运算 & 闭运算2.1...
    99+
    2024-04-02
  • Python中图像形态学运算技术的示例分析
    这篇文章主要为大家展示了“Python中图像形态学运算技术的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Python中图像形态学运算技术的示例分析”这篇文章吧。1 图像形态学运算在Py...
    99+
    2023-06-29
  • Python实例解析图像形态学运算技术
    1 图像形态学运算 在Python OpenCV图像处理之图像滤波特效详解中我们将图像滤波进行了以下分类: 邻域滤波 线性滤波 非线性滤波 频域滤波 ...
    99+
    2024-04-02
  • Python-OpenCV深度学习的示例分析
    这篇文章将为大家详细讲解有关Python-OpenCV深度学习的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。1. 计算机视觉中的深度学习简介深度学习推动了计算机视觉领域的深刻变革,我们首先解释深...
    99+
    2023-06-22
  • Python中opencv医学处理的示例分析
    这篇文章给大家分享的是有关Python中opencv医学处理的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。python可以做什么Python是一种编程语言,内置了许多有效的工具,Python几乎无所不能...
    99+
    2023-06-15
  • python中DataFrame运算的示例分析
    这篇文章给大家分享的是有关python中DataFrame运算的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。Python的优点有哪些1、简单易用,与C/C++、Java、C# 等传统语言相比,Pytho...
    99+
    2023-06-15
  • python之基本形态学滤波实例分析
    本文小编为大家详细介绍“python之基本形态学滤波实例分析”,内容详细,步骤清晰,细节处理妥当,希望这篇“python之基本形态学滤波实例分析”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。引言对图像进行形态学变...
    99+
    2023-07-02
  • python三元运算符的示例分析
    小编给大家分享一下python三元运算符的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!三元运算符:我们经常会根据条件,将变量设置成不同的值:if&nbs...
    99+
    2023-06-27
  • 详解Python图像形态学处理(开运算,闭运算,梯度运算)
    目录一.图像开运算二.图像闭运算三.图像梯度运算四.总结这篇文章将继续介绍开运算、闭运算和梯度运算。数学形态学(Mathematical Morphology)是一种应用于图像处理和...
    99+
    2024-04-02
  • Python+OpenCV之形态学操作详解
    目录一、 腐蚀与膨胀1.1 腐蚀操作1.2 膨胀操作二、 开运算与闭运算2.1 开运算2.2 闭运算三、梯度运算四、礼帽与黑帽4.1 礼帽4.2 黑帽一、 腐蚀与膨胀 1.1 腐蚀操...
    99+
    2024-04-02
  • PHP运算符的示例分析
    这篇文章将为大家详细讲解有关PHP运算符的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。l 逻辑运算符:概念:对表达式进行逻辑运算,运算出的结果是布尔类型的值(true,false)要求:参与逻辑...
    99+
    2023-06-15
  • Java位运算的示例分析
    这篇文章给大家分享的是有关Java位运算的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。位运算表达式由操作数和位运算符组成,实现对整数类型的二进制数进行位运算。位运算符可以分为逻辑运算符(包括~、&、|和...
    99+
    2023-06-02
  • php算术运算符的示例分析
    这篇文章主要介绍php算术运算符的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!php有什么特点1、执行速度快。2、具有很好的开放性和可扩展性。3、PHP支持多种主流与非主流的数据库。4、面向对象编程:PHP...
    99+
    2023-06-14
  • OpenCV-Python实现通用形态学函数
    目录通用形态学函数开运算闭运算形态学梯度运算顶帽运算黑帽运算结构元函数通用形态学函数 上篇博文,我们介绍了形态学的基础腐蚀与膨胀操作,而将腐蚀与膨胀结合起来进行组合,我们就能实现开运...
    99+
    2024-04-02
  • Python中opencv操作的示例分析
    这篇文章主要介绍Python中opencv操作的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!直接读取图片def display_img(file="p.jpeg"): ...
    99+
    2023-06-14
  • php中运算符的示例分析
    这篇文章将为大家详细讲解有关php中运算符的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。相等运算符与全等运算符都属于比较运算符,都是二元运算符,返回值为true、false。  1.相...
    99+
    2023-06-07
  • python数值运算实例分析
    今天小编给大家分享一下python数值运算实例分析的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。说明对整数型和浮点型来说,由...
    99+
    2023-06-30
  • Python中图像算术与逻辑运算的示例分析
    小编给大家分享一下Python中图像算术与逻辑运算的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!一.图像加法运算图像加法运算主要有两种方法。第一种是调用...
    99+
    2023-06-29
  • Python OpenCV图像识别的示例分析
    小编给大家分享一下Python OpenCV图像识别的示例分析,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!一、人脸识别主要有以下两种实现方法:哈尔(Haar)级联法:专门解决人脸识别而推出的传统算法;实现步骤:...
    99+
    2023-06-29
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作