美文网首页
Python | OpenCV形态学运算基础

Python | OpenCV形态学运算基础

作者: 大师的学徒 | 来源:发表于2020-04-11 18:56 被阅读0次
import cv2
import numpy as np
from matplotlib import pyplot as plt

形态学运算的基础是腐蚀和膨胀

腐蚀运算通过降低边缘噪点实现平滑,膨胀通过扩大边缘实现消除内部噪点

o = cv2.imread("erode_hand.jpg")  #原图为黑底白色mask
kernel = np.ones((6, 6), np.uint8)  #定义6*6的算子
erd = cv2.erode(o, kernel, iterations=2)  #此处定义迭代运算2次
dil = cv2.dilate(o, kernel, iterations=2)

plt.figure("original - erode - dilate")  
#调用plot中的imshow函数来显示多图对比
plt.subplot(131), plt.imshow(o, cmap=plt.cm.gray), plt.axis("off")  
#cmap为色彩空间,原图为灰度图,故cmap=plt.cm.gray
plt.subplot(132), plt.imshow(erd, cmap=plt.cm.gray), plt.axis("off")
plt.subplot(133), plt.imshow(dil, cmap=plt.cm.gray), plt.axis("off")
plt.show()  #显示图像
original - erode - dilate

通用形态学运算

dst = cv2.morphologyEX(scr, op, kernel[, anchor[, iterations[, borderType[, borderValye]]]]])

op====> cv2.MORPH_OPEN 开运算

首先腐蚀然后膨胀,达到外部去噪目的

open = cv2.morphologyEx(o, cv2.MORPH_OPEN, kernel, iterations=2)

plt.figure("original - open")
plt.subplot(121), plt.imshow(o, cmap=plt.cm.gray), plt.axis("off")
plt.subplot(122), plt.imshow(open, cmap=plt.cm.gray), plt.axis("off")
plt.show()
original - open

op====> cv2.MORPH_CLOSE 闭运算

首先膨胀然后腐蚀,达到内部去噪目的

close = cv2.morphologyEx(o, cv2.MORPH_CLOSE, kernel, iterations=2)

plt.figure("original - close")
plt.subplot(121), plt.imshow(o, cmap=plt.cm.gray), plt.axis("off")
plt.subplot(122), plt.imshow(close, cmap=plt.cm.gray), plt.axis("off")
plt.show()
original - close

op====> cv2.MORPH_TOPHAT 礼帽运算

原始图像减去开运算图像,通常得到比原图更亮的边缘噪点图像

tophat = cv2.morphologyEx(o, cv2.MORPH_TOPHAT, kernel)

plt.figure("original - open - tophat")
plt.subplot(131), plt.imshow(o, cmap=plt.cm.gray), plt.axis("off")
plt.subplot(132), plt.imshow(open, cmap=plt.cm.gray), plt.axis("off")
plt.subplot(133), plt.imshow(tophat, cmap=plt.cm.gray), plt.axis("off")
plt.show()
original - open - tophat

op====> cv2.MORPH_BLACKHAT 黑帽运算

闭运算减去原始图像,得到原始图像中的小孔,通常得到比原图暗的噪点图像

blackhat = cv2.morphologyEx(o, cv2.MORPH_BLACKHAT, kernel)

plt.figure("original - close - blackhat")
plt.subplot(131), plt.imshow(o, cmap=plt.cm.gray), plt.axis("off")
plt.subplot(132), plt.imshow(close, cmap=plt.cm.gray), plt.axis("off")
plt.subplot(133), plt.imshow(blackhat, cmap=plt.cm.gray), plt.axis("off")
plt.show()
original - close - blackhat

相关文章

  • Python | OpenCV形态学运算基础

    形态学运算的基础是腐蚀和膨胀 腐蚀运算通过降低边缘噪点实现平滑,膨胀通过扩大边缘实现消除内部噪点 通用形态学运算 ...

  • 形态学图像处理(二):开运算、闭运算、形态学梯度、顶帽、黑帽合辑

    【OpenCV入门教程之十一】 形态学图像处理(二):开运算、闭运算、形态学梯度、顶帽、黑帽合辑 一、概念 1.1...

  • 形态学转换(OpenCV-Python)

    本文内容是对Opencv官方文档的学习笔记内容:学习不同的形态学操作,包括腐蚀,膨胀,开运算,闭运算,礼帽,黑帽。...

  • 灰度形态学算法的实现

    前言 灰度形态学算法中介绍了灰度形态学算法的相关原理,本篇文章将会利用python结合numpy和opencv实现...

  • Python+OpenCV教程12:腐蚀与膨胀

    主站:http://ex2tron.wang原文:Python+OpenCV教程12:腐蚀与膨胀 学习常用形态学操...

  • 形态学操作

    · 形态学操作主要包括:腐蚀,膨胀,开运算,闭运算,形态学梯度运算,顶帽运算,黑帽运算,击中击不中 腐蚀 将图像的...

  • 膨胀和腐蚀

    膨胀和腐蚀这两种操作是形态学处理的基础,许多形态学算法都是以这两种运算为基础的. ① 膨胀 是以得到B的相对与它自...

  • Opencv第七课--形态学滤波

    形态学滤波 形态学滤波包括腐蚀、膨胀、开运算、闭运算、形态学梯度、礼帽、黑帽下面针对这四种形态学操作,说明一下其原...

  • 形态学算法

    上海交通大学 医学图像处理技术 形态学的二值运算 形态学二值运算包括膨胀,腐蚀,开运算和闭运算基本方法,如下图所示...

  • 通用形态学函数---OpenCV-Python开发指南(19)

    通用形态学函数 上篇博文,我们介绍了形态学的基础腐蚀与膨胀操作,而将腐蚀与膨胀结合起来进行组合,我们就能实现开运算...

网友评论

      本文标题:Python | OpenCV形态学运算基础

      本文链接:https://www.haomeiwen.com/subject/nmgumhtx.html