OpenCV中的腐蚀和膨胀操作
#形态学转换
#侵蚀、膨胀、开运算、闭运算等
import cv2
import numpy as np
‘’’
#侵蚀:侵蚀前景物体的边界(尽量使前景保持白色)
#内核滑动通过图像(在2D卷积中),原始图像中的一个像素只有当内核下的所有像素都是1时才被认为是1,否则其被侵蚀为0
#有助于去除小的白色噪声,分离两个连接的对象
img = cv2.imread(‘C:\Users\Administrator\Desktop\qq.png’)
img = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
img = 255-img #将前景改为白色
ret,threshold = cv2.threshold(img,120,255,cv2.THRESH_BINARY)
kernel = np.ones((5,5),np.int8)
erosion = cv2.erode(threshold,kernel,iterations=1)
cv2.imshow(‘qq1’,threshold) #原图
cv2.imshow(‘qq2’,erosion) #侵蚀之后的图
cv2.waitKey(0)
‘’’
#膨胀:增加图像中的白色区域或者增加前景对象的大小
#原始图像中的一个像素,当内核下至少有一个像素为1,则原始图像中的该像素设为1
img = cv2.imread(‘C:\Users\Administrator\Desktop\qq.png’)
img = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
img = 255-img #将前景改为白色
ret,threshold = cv2.threshold(img,120,255,cv2.THRESH_BINARY)
kernel = np.ones((5,5),np.int8)
dilation = cv2.dilate(threshold,kernel,iterations=1)
cv2.imshow(‘qq1’,threshold) #原图
cv2.imshow(‘qq2’,dilation) #膨胀之后的图
cv2.waitKey(0)
#开运算:先侵蚀,再膨胀
#通常,在消除噪声的情况下,腐蚀之后会膨胀。因为腐蚀会消除噪声,但是也会缩小物体。
#因此,对其进行膨胀。由于噪声消失了,它们不会回来,在连接对象的损坏部分时也很有用。
#闭运算:先膨胀,再侵蚀
#在关闭前景对象内部的小孔或者前景对象上的小黑点时很有用