计算机视觉实战(四)图像形态学操作
??本节主要介绍形态学的一些操作运算,通过代码跟效果可以清楚地认识到其大概的意思。
形态学-腐蚀操作 ??通常都是二值的图像来做腐蚀操作。腐蚀的大概意思就是往里面缩一些。
import cv2
import numpy as np
img = cv2.imread('dige.png')
cv2.imshow('dige', img)
kernel = np.ones((3, 5), np.uint8)
erosion = cv2.erode(img,kernel,iterations = 1) #迭代次数表示做几次腐蚀操作
cv2.imshow('corrosion',erosion)
cv2.waitKey(0)
cv2.destroyAllWindows()
??其结果如下图所示,可以看出腐蚀能够将边缘地小刺给清除掉:

文章图片
形态学-膨胀操作 ??通常都是二值的图像来做腐蚀操作。膨胀的大概意思就是往外面扩一些。
import cv2
import numpy as np
img = cv2.imread('dige.png')
kernel = np.ones((3,3), np.uint8)
dilate = cv2.dilate(img, kernel, iterations=1)
cv2.imshow('img', img)
cv2.imshow('erosion', dilate)
cv2.waitKey(0)
cv2.destroyAllWindows()
??其结果如下图所示,可以看出膨胀之后白线都变粗了:

文章图片
开运算 ?? 开:先腐蚀,再膨胀,这个操作能够将主体被腐蚀地部分补偿回去,但是边缘的毛刺很好的被清除掉。
import numpy as np
import cv2
img = cv2.imread('dige.png')
kernel = np.ones((5,5), np.uint8)
opening = cv2.morphologyEx(img, cv2.MORPH_OPEN, kernel)
cv2.imshow('opening', opening)
cv2.waitKey(0)
cv2.destroyAllWindows()
??其结果如下图所示,可以看出效果比较好:

文章图片
闭运算 【计算机视觉实战(四)图像形态学操作】?? 闭:先膨胀,再腐蚀,这个就对边缘的毛刺没有什么清除效果。
import numpy as np
import cv2
img = cv2.imread('dige.png')
kernel = np.ones((5,5), np.uint8)
opening = cv2.morphologyEx(img, cv2.MORPH_CLOSE, kernel)
cv2.imshow('closing', opening)
cv2.waitKey(0)
cv2.destroyAllWindows()
??其结果如下图所示:

文章图片
梯度运算 ?? 梯度=膨胀-腐蚀,这是另一种计算图像边缘的方法,具体理解的话需要看一下实验结果:
import cv2
import numpy as np
pie = cv2.imread('pie.png')
kernel = np.ones((2,2),np.uint8)
gradient = cv2.morphologyEx(pie, cv2.MORPH_GRADIENT, kernel)
cv2.imshow('gradient', gradient)
cv2.waitKey(0)
cv2.destroyAllWindows()
??其结果如下图所示:

文章图片
礼帽与黑帽 ?? 礼帽 = 原始输入-开运算结果
?? 黑帽 = 闭运算-原始输入。
import cv2
import numpy as np
img = cv2.imread('dige.png')
kernel = np.ones((7,7),np.uint8)
tophat = cv2.morphologyEx(img, cv2.MORPH_TOPHAT, kernel)
cv2.imshow('tophat', tophat)
cv2.waitKey(0)
cv2.destroyAllWindows()
??其结果如下图所示:

文章图片
import cv2
import numpy as np
img = cv2.imread('dige.png')
kernel = np.ones((7,7),np.uint8)
blackhat= cv2.morphologyEx(img,cv2.MORPH_BLACKHAT, kernel)
cv2.imshow('blackhat', blackhat)
cv2.waitKey(0)
cv2.destroyAllWindows()
??其结果如下图所示:

文章图片
- https://github.com/ZhiqiangHo/Opencv-Computer-Vision-Practice-Python-
我的微信公众号名称:深度学习与先进智能决策
微信公众号ID:MultiAgent1024
公众号介绍:主要研究分享深度学习、机器博弈、强化学习等相关内容!期待您的关注,欢迎一起学习交流进步!
推荐阅读
- 别墅庭院设计,不同的别墅庭院设计也给人视觉上完全不一样的!
- ACSL|ACSL 美国计算机科学联赛 2016-2017 R4 摩天大楼-Skyscraper 题解
- 《机器学习实战》高清中文版PDF英文版PDF+源代码下载
- --木木--|--木木-- 第二课作业#翼丰会(每日一淘6+1实战裂变被动引流# 6+1模式)
- 2020-07-29《吴军·阅读与写作50讲》24实战才能转化效能
- Python实战计划学习笔记(9)为大规模爬取准备
- 韵达基于云原生的业务中台建设 | 实战派
- 历史上的今天|【历史上的今天】2 月 16 日(世界上第一个 BBS 诞生;中国计算机教育开端;IBM 机器人赢得智能竞赛)
- 【V课会】第3季-30天小学思维导图实战营
- 计算机网络基础TCP\HTTP\HTTPS