opcv17形态学转换

#形态学转换
#目标:要学习的形态学的操作有:腐蚀,膨胀,开运算,闭运算,形态学梯度,礼帽,黑帽。
#原理:形态学操作是根据   图像形状   进行的简单操作,一般情况下对二值化图像进行的操作。
#需要输入两个参数,一个是原始图像,第二个被称为结构化图像或核,他们是用来决定操作性质。

#会用到的函数:
#1#cv2.erode(src,element,anchor,iterations)
#参数1:src,原图像
#参数2:element,腐蚀操作的内核,默认为一个简单的 3x3 矩阵
#参数3:anchor,默认为Point(-1,-1),内核中心点
#参数4:iterations,腐蚀次数,默认值1

#2#cv2.dilate(img, kernel, iterations=1)

#3#cv2.morphologyEx(img, cv2.MORPH_OPEN, kernel)




'''
#腐蚀
#这个操作会把前景物体的边界腐蚀掉(但是前景仍然是白色)(简单理解前景物体就是我感兴趣的物体)
#腐蚀类似于“领域 被蚕食”,将图像中白色部分进行缩减细化,其运行结果图比原 图的白色区域更小
#原理:卷积核沿着图像滑动,如果与卷积核对应的原图像的所有像素值都是1,那么中心元素就保持原来的像素值,否则会变为0.
#这会导致卷积核的大小靠近前景所有像素都会被腐蚀掉(变为0),所以前景物体会减小,图像的白色区域也会减少。这对去除白色噪音有效。
#卷积核定义(科普中国):卷积核就是图像处理时,给定输入图像,输入图像中一个小区域中像素加权平均后成为输出图像中的每个对应像素,其中权值由一个函数定义,这个函数称为卷积核
import cv2
import numpy as np
img = cv2.imread('test6.png', 0)
keneral = np.ones((20, 20) ,np.uint8)
erosion = cv2.erode(img, keneral, iterations=1)
cv2.imshow('opcv17', erosion)
cv2.imshow('oringin', img)
cv2.waitKey(0)
cv2.destroyAllWindows()
'''
'''
#膨胀:与卷积核对应的原图像中只要有一个是1,中心元素像素值就是1,所以就相当于增加白色区域。其中膨胀类似于“领域扩张”,将图像中的白色部分进行扩张,其运行结果图比原图的白色区域更大
import cv2
import numpy as np

img = cv2.imread('test6.png')
keneral = np.ones((20, 20), np.uint8)
dilation = cv2.dilate(img, keneral, iterations= 1)
cv2.imshow('origin', img)
cv2.imshow('dilation', dilation)
cv2.waitKey(0)
cv2.destroyAllWindows()
'''
'''
#开运算:先进行腐蚀再进行膨胀
import cv2
import numpy as np
img = cv2.imread('test7.png')
keneral = np.ones((20, 20), np.uint8)
opening = cv2.morphologyEx(img, cv2.MORPH_OPEN, keneral)
cv2.imshow('origin', img)
cv2.imshow('opening', opening)
cv2.waitKey(0)
cv2.destroyAllWindows()
'''
'''
#闭运算:先膨胀后腐蚀
import cv2
import numpy as np
img = cv2.imread('test8.png')
keneral = np.ones((20, 20), np.uint8)
close = cv2.morphologyEx(img, cv2.MORPH_CLOSE, keneral)
cv2.imshow('origin', img)
cv2.imshow('close', close)
cv2.waitKey(0)
cv2.destroyAllWindows()
'''
'''
#形态学梯度:其实就是一幅图像膨胀与腐蚀的差别,结果看上去会像前景物体的轮廓
import cv2
import numpy as np
img = cv2.imread('test6.png')
keneral = np.ones((20, 20), np.uint8)
gradient = cv2.morphologyEx(img, cv2.MORPH_GRADIENT, keneral)
cv2.imshow('origin', img)
cv2.imshow('gradient', gradient)
cv2.waitKey(0)
cv2.destroyAllWindows()
'''

#礼帽:原始图像与进行开运算之后得到的图像的差
import cv2
import numpy as np
img = cv2.imread('test9.png')
keneral = np.ones((9, 9), np.uint8)
tophat = cv2.morphologyEx(img, cv2.MORPH_TOPHAT, keneral)
cv2.imshow('origin', img)
cv2.imshow('tophat', tophat)
cv2.waitKey(0)
cv2.destroyAllWindows()

'''
#黑帽:进行闭运算之后得到的图像与原始图像的差
import cv2
import numpy as np
img = cv2.imread('test10.png')
keneral = np.ones((9, 9), np.uint8)
blackhat = cv2.morphologyEx(img, cv2.MORPH_BLACKHAT, keneral)
cv2.imshow('origin', img)
cv2.imshow('blackhat', blackhat)
cv2.waitKey(0)
cv2.destroyAllWindows()
'''

腐蚀:

膨胀

开运算:

闭运算:

形态学梯度

礼帽

黑帽:

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值