本文主要介绍形态学变换
代码如下:
o1=np.zeros((3,3,3))
img[250:253,350:353]=o1
img[50:53,150:153]=o1
kernel=np.ones((3,3),np.uint8)
#kernel = cv2.getStructuringElement(cv2.MORPH_RECT,(3,1))
#形态学变化-腐蚀,iterations代表腐蚀次数
img2=cv2.erode(img,kernel,iterations=10)
#形态学变化-膨胀
img3=cv2.dilate(img,kernel,iterations=2)
#开运算,腐蚀->膨胀 可以有效去掉边缘数据和噪声
img2=cv2.morphologyEx(img,cv2.MORPH_OPEN,kernel,iterations=2)
#闭运算,膨胀->腐蚀 可以去除前景物体内的小孔或者黑点
img2=cv2.morphologyEx(img,cv2.MORPH_CLOSE,kernel,iterations=3)
#图形梯度 膨胀-腐蚀 可以得到轮廓图像
img2=cv2.morphologyEx(img,cv2.MORPH_GRADIENT,kernel)
#图像顶帽操作 原始图像-开运算图像 得到噪声图像
img3=cv2.morphologyEx(img,cv2.MORPH_TOPHAT,kernel)
#黑帽操作 原始图像-闭运算图像 得到图像内部小孔或者前景中的黑点
img3=cv2.morphologyEx(img,cv2.MORPH_BLACKHAT,kernel,iterations=3)