Open_CV形态学运算专题 (腐蚀&膨胀、开&闭运算、梯度运算、顶帽运算黑帽运算 )【Python-Open_CV系列(十)】(下)

简介: Open_CV形态学运算专题 (腐蚀&膨胀、开&闭运算、梯度运算、顶帽运算黑帽运算 )【Python-Open_CV系列(十)】

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"(下图)来继续下边的示例:

1.png

3.2 梯度运算

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

import cv2
import numpy as np
img = 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梯度运算执行效果如下:1.png

3.3 顶帽运算

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

import cv2
import numpy as np
img = 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()

顶帽运算,即原图减去开运算图,

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


顶帽运算处理效果如下:

1.png

3.4 黑帽运算

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

import cv2
import numpy as np
img = 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()

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


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


黑帽运算处理效果如下:

1.png

目录
相关文章
|
5月前
|
数据处理 Python
彻底掌握Python集合:无序性、去重神器与高效集合运算指南
彻底掌握Python集合:无序性、去重神器与高效集合运算指南
162 1
|
3月前
|
算法 数据处理 Python
Python中的集合的运算
Python中的集合的运算
|
3月前
|
机器学习/深度学习 前端开发 数据挖掘
基于Python Django的房价数据分析平台,包括大屏和后台数据管理,有线性、向量机、梯度提升树、bp神经网络等模型
本文介绍了一个基于Python Django框架开发的房价数据分析平台,该平台集成了多种机器学习模型,包括线性回归、SVM、GBDT和BP神经网络,用于房价预测和市场分析,同时提供了前端大屏展示和后台数据管理功能。
|
4月前
|
Python
Python线程是操作系统能够进行运算的最小单位
【7月更文挑战第18天】Python线程是操作系统能够进行运算的最小单位
33 1
|
4月前
|
机器学习/深度学习 数据采集 算法
Python实现GBDT(梯度提升树)回归模型(GradientBoostingRegressor算法)项目实战
Python实现GBDT(梯度提升树)回归模型(GradientBoostingRegressor算法)项目实战
136 6
|
4月前
|
机器学习/深度学习 数据采集 算法
Python实现GBDT(梯度提升树)分类模型(GradientBoostingClassifier算法)并应用网格搜索算法寻找最优参数项目实战
Python实现GBDT(梯度提升树)分类模型(GradientBoostingClassifier算法)并应用网格搜索算法寻找最优参数项目实战
163 3
|
4月前
|
数据可视化 数据挖掘 数据处理
Python对Excel两列数据进行运算【从基础到高级的全面指南】
【7月更文挑战第6天】使用Python的`pandas`库处理Excel数据,涉及安装`pandas`和`openpyxl`,读取数据如`df = pd.read_excel('data.xlsx')`,进行运算如`df['Sum'] = df['Column1'] + df['Column2']`,并将结果写回Excel。`pandas`还支持数据筛选、分组、可视化、异常处理和性能优化。通过熟练运用这些功能,可以高效分析Excel表格。
225 0
|
5月前
|
机器学习/深度学习 算法 Serverless
利用无穷级数逼近计算幂运算与开根号——Python实现
使用泰勒级数逼近法,本文介绍了如何用Python计算特殊幂运算,包括分数次幂和开根号。通过定义辅助函数,如`exp`、`getN_minus_n`、`multi`和`getnum`,实现了计算任意实数次幂的功能。实验结果显示,算法能有效计算不同情况下的幂运算,例如`0.09^2`、`1^2`、`0.25^2`、`0.09^(0.5)`、`1^(0.5)`和`0.25^(0.5)`。虽然精度可能有限,但可通过调整迭代次数平衡精度与计算速度。
|
5月前
|
Python
|
4月前
|
语音技术 开发者 Python
语音识别,python运行H ~W~,要使用英符,执行Python的流程是输入Python,回车,解释器的两大功能,翻译代码,提交计算机运算,多行代码运行,写一个py文件,pycharm安
语音识别,python运行H ~W~,要使用英符,执行Python的流程是输入Python,回车,解释器的两大功能,翻译代码,提交计算机运算,多行代码运行,写一个py文件,pycharm安