心态学-腐蚀操作
import cv2
import numpy as np
img = cv2.imread('qing.jpg')
cv2.imshow('img',img)
kernel = np.ones((5, 5),np.uint8)#决定每次腐蚀的范围
erosion = cv2.erode(img,kernel,iterations = 1)#iterations为迭代次数,迭代次数越多,腐蚀程度越深
cv2.imshow('erosion', erosion)
cv2.waitKey(0)
cv2.destroyAllWindows()
改变迭代次数
import cv2
import numpy as np
img = cv2.imread('qing.jpg')
cv2.imshow('img',img)
kernel = np.ones((5, 5),np.uint8)#决定每次腐蚀的范围
erosion = cv2.erode(img,kernel,iterations = 3)#iterations为迭代次数,迭代次数越多,腐蚀程度越深
cv2.imshow('erosion', erosion)
cv2.waitKey(0)
cv2.destroyAllWindows()
改变腐蚀范围
import cv2
import numpy as np
img = cv2.imread('qing.jpg')
cv2.imshow('img',img)
kernel = np.ones((9, 9),np.uint8)#决定每次腐蚀的范围
erosion = cv2.erode(img,kernel,iterations = 1)#iterations为迭代次数,迭代次数越多,腐蚀程度越深
cv2.imshow('erosion', erosion)
cv2.waitKey(0)
cv2.destroyAllWindows()
膨胀操作
import cv2
import numpy as np
img = cv2.imread('qing.jpg')
cv2.imshow('img',img)
kernel = np.ones((9, 9),np.uint8)#决定每次腐蚀的范围
erosion = cv2.erode(img,kernel,iterations = 1)#iterations为迭代次数,迭代次数越多,腐蚀程度越深
cv2.imshow('erosion', erosion)
kernel = np.ones((9, 9),np.uint8)#决定每次腐蚀的范围
dilate = cv2.dilate(erosion,kernel,iterations = 1)#iterations为迭代次数,迭代次数越多,腐蚀程度越深
cv2.imshow('dilate', dilate)
cv2.waitKey(0)
cv2.destroyAllWindows()
膨胀操作与腐蚀操作互逆
开运算与闭运算
import cv2
import numpy as np
img = cv2.imread('qing.jpg')
#开:先腐蚀,再膨胀
kernel = np.ones((5, 5), np.uint8)
opening = cv2.morphologyEx(img,cv2.MORPH_OPEN, kernel)
cv2.imshow('opening', opening)
#闭:先膨胀,再腐蚀
kernel = np.ones((5, 5), np.uint8)
closing = cv2.morphologyEx(img,cv2.MORPH_CLOSE, kernel)
cv2.imshow('closing', closing)
cv2.waitKey(0)
cv2.destroyAllWindows()
梯度运算
实际为膨胀运算减去腐蚀运算,可以得到边界
import cv2
import numpy as np
img = cv2.imread('qing.jpg')
kernel = np.ones((9, 9),np.uint8)#决定每次腐蚀的范围
erosion = cv2.erode(img,kernel,iterations = 1)#iterations为迭代次数,迭代次数越多,腐蚀程度越深
dilate = cv2.dilate(erosion,kernel,iterations = 1)#iterations为迭代次数,迭代次数越多,腐蚀程度越深
res = np.hstack((dilate,erosion))
cv2.imshow('res', res)
gradient = cv2.morphologyEx(img,cv2.MORPH_GRADIENT, kernel)
cv2.imshow('gradient', gradient)
cv2.waitKey(0)
cv2.destroyAllWindows()
礼帽与黑盒
礼帽:原始输入-开运算结果
黑盒:闭运算-原始输入
import cv2
import numpy as np
img = cv2.imread('qing.jpg')
kernel = np.ones((21, 21),np.uint8)#决定每次腐蚀的范围
tophat = cv2.morphologyEx(img,cv2.MORPH_TOPHAT, kernel)
cv2.imshow('tophat', tophat)
blackhat = cv2.morphologyEx(img, cv2.MORPH_BLACKHAT, kernel)
cv2.imshow('blackhat', blackhat)
cv2.waitKey(0)
cv2.destroyAllWindows()