Opencv学习(3)——形态学操作

形态学操作

导入库

import cv2
import numpy as np

原始图像

Opencv学习(3)——形态学操作_第1张图片

形态学腐蚀

可以通过腐蚀操作将图像”变瘦“
通过cv2.erode( image,kernel,iterations)函数 可以实现
image:要操作的图片
kernel:腐蚀的核函数
iterations:迭代次数,迭代次数越多,图像越不明显

img = cv2.imread('dige.png')
kernel = np.ones((3,3),np.uint8)
erosion = cv2.erode(img,kernel=kernel,iterations=1)
#iterations是迭代次数,迭代次数越多,图像越不明显

Opencv学习(3)——形态学操作_第2张图片
可以看到周围的细线条消失了,并且图像变细

形态学膨胀

可以通过膨胀操作将图像”变胖“
通过cv2.dilate( image,kernel,iterations)函数 可以实现
image:要操作的图片
kernel:膨胀的核函数
iterations:迭代次数,迭代次数越多,图像越明显

img = cv2.imread('dige.png')
kernal = np.ones((3,3),np.uint8)
dilate = cv2.dilate(erosion,kernel=kernal,iterations=1)

Opencv学习(3)——形态学操作_第3张图片
可以看出,图像整体变粗

开运算与闭运算

开运算:先腐蚀再膨胀

 img = cv2.imread('dige.png')
kernel = np.ones((3,3),np.uint8)
opening = cv2.morphologyEx(img,cv2.MORPH_OPEN,kernel)

Opencv学习(3)——形态学操作_第4张图片
可以看出开运算后的图像,相比与原来的图像线条粗细没有变化,只是少了周围的细线条

闭运算:先膨胀再腐蚀


img = cv2.imread('dige.png')
kernel = np.ones((3,3),np.uint8)
closeing = cv2.morphologyEx(img,cv2.MORPH_CLOSE,kernel)

梯度运算:先把原图像膨胀和腐蚀得到两个图像,然后梯度图像 = 膨胀图像 - 腐蚀图像

pie = cv2.imread('pie.png')
kernel = np.ones((7,7),np.uint8)
gradient = cv2.morphologyEx(pie,cv2.MORPH_GRADIENT,kernel)

这里以一个圆的图像为例子
Opencv学习(3)——形态学操作_第5张图片
原图像是这样的Opencv学习(3)——形态学操作_第6张图片
经过梯度运算后只保留了边框出来

礼帽和黑帽

礼帽 = 原始输入 - 开运算结果Opencv学习(3)——形态学操作_第7张图片

黑帽 = 闭运算 - 原始输入

img = cv2.imread('dige.png')
kernel = np.ones((3,3),np.uint8)
tophat = cv2.morphologyEx(img,cv2.MORPH_TOPHAT,kernel)
black = cv2.morphologyEx(img,cv2.MORPH_BLACKHAT,kernel)

Opencv学习(3)——形态学操作_第8张图片

你可能感兴趣的:(opencv,学习,python)