两个基本的形态学操作是腐蚀和膨胀。他们的变化构成了开运算,闭运算,梯度等。下面以这张图为例

1.腐蚀

这个操作会把前景物体的边界腐蚀掉。

 import cv2
import numpy as np img = cv2.imread('D:/Test/j.png',0)
kernel = np.ones((5,5),np.uint8)
erosion = cv2.erode(img,kernel,iterations = 1)
cv2.imshow('img',img)
cv2.imshow('result',erosion)
cv2.waitKey(0)
cv2.destroyAllWindows()

左边是腐蚀之后的图像,右边是原图像。

2.膨胀

 import cv2
import numpy as np img = cv2.imread('D:/Test/j.png',0)
kernel = np.ones((5,5),np.uint8)
dilation = cv2.dilate(img,kernel,iterations = 1)
cv2.imshow('img',img)
cv2.imshow('result',dilation)
cv2.waitKey(0)
cv2.destroyAllWindows()

左边是膨胀之后的图像,右边是原图像。

3.开运算

先进性腐蚀再进行膨胀就叫做开运算,它被用来去除噪声。这里我们用到的函数是 cv2.morphologyEx()。

opening = cv2.morphologyEx(img, cv2.MORPH_OPEN, kernel)

4.闭运算

先膨胀再腐蚀。它经常被用来填充前景物体中的小洞,或者前景物体上的小黑点。

closing = cv2.morphologyEx(img, cv2.MORPH_CLOSE, kernel)

5. 形态学梯度

  其实就是一幅图像膨胀与腐蚀的差别。结果看上去就像前景物体的轮廓。

 import cv2
import numpy as np
img = cv2.imread('D:/Test/j.png',0)
kernel = np.ones((5,5),np.uint8)
gradient = cv2.morphologyEx(img, cv2.MORPH_GRADIENT, kernel)
cv2.imshow('img',img)
cv2.imshow('result',gradient)
cv2.waitKey(0)
cv2.destroyAllWindows()

左边是梯度之后的图像,右边是原图像。

6.礼帽

原始图像与进行开运算之后得到的图像的差。

 import cv2
import numpy as np
img = cv2.imread('D:/Test/j.png',0)
kernel = np.ones((5,5),np.uint8)
tophat = cv2.morphologyEx(img, cv2.MORPH_TOPHAT, kernel)
cv2.imshow('img',img)
cv2.imshow('result',tophat)
cv2.waitKey(0)
cv2.destroyAllWindows()

结果:

7.黑帽

进行闭运算之后得到的图像与原始图像的差。

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

最新文章

  1. vue 配置文件详解
  2. sublime text 3 使用方法
  3. Boostrap
  4. django初始
  5. hdu 4041 2011北京赛区网络赛B 搜索 ***
  6. (zz) 谷歌技术"三宝"之BigTable
  7. Java 或者android 的加密技术
  8. 重新想象 Windows 8 Store Apps (36) - 通知: Tile 详解
  9. JS脚本语言里的循环
  10. PHP中$_FILES的使用及注意事项
  11. 【转】利用DCC32实现命令行批量编译
  12. Java并发编程-volatile
  13. Making your local server accessible from anywhere
  14. [Leetcode][Python]44:Wildcard Matching
  15. 【Spring 核心】装配Bean(一) 自动化装配
  16. 把项目放到码云上,通过git 进行项目管理
  17. 如何在一个项目中同时包含mvc建站、webapi接口
  18. Eclipse中JRE(unbound)问题的一种解决方法
  19. 自然语言处理工具:中文 word2vec 开源项目,教程,数据集
  20. [Unity优化]批处理02:动态批处理

热门文章

  1. Netty(3)Time protocol
  2. F. Coprime Subsequences 莫比乌斯反演
  3. 跟老男孩学Linx运维---web集群实战笔记
  4. Map和Map.Entry
  5. 在MasterPage中检验session是否存在~
  6. intelliJ idea 激活和配置
  7. SQL数据库基础三
  8. Android笔记--View绘制流程源码分析(一)
  9. LeetCode Pascal's Triangle Pascal三角形
  10. 洛谷 P2905 [USACO08OPEN]农场危机Crisis on the Farm