import cv2
import numpy as np
img = cv2.imread('dige.png')
cv2.imshow('img',img)
cv2.waitKey(0)
cv2.destoryAllWindows()
import cv2
import numpy as np
kernel = np.ones((5,5),np.uint8)
erosion = cv2.erode(img,kernel,iterations = 1)#kernel 传进来一个核,iterations = 1迭代次数
cv2.imshow('erosion',erosion)
cv2.waitKey(0)
cv2.destoryAllWindows()
erosion = np.hstack((img, erosion))
import cv2
import numpy as np
kernel = np.ones((3,3),np.uint8)
erosion = cv2.erode(img,kernel,iterations =3)#kernel 传进来一个核,iterations = 1迭代次数
cv2.imshow('erosion',erosion)
cv2.waitKey(0)
cv2.destoryAllWindows()
erosion = np.hstack((img, erosion))
import cv2
import numpy as np
pie = cv2.imread('pie.png')
cv2.imshow('pie',pie)
cv2.waitKey(0)
cv2.destoryAllWindows()
kernel = np.ones((20, 20), np.uint8)
erosion_1 = cv2.erode(pie, kernel, iterations=1)
erosion_2 = cv2.erode(pie, kernel, iterations=2)
erosion_3 = cv2.erode(pie, kernel, iterations=3)
imgs = np.hstack((erosion_1, erosion_2, erosion_3))
cv2.imshow('pie', imgs)
cv2.waitKey(0)
cv2.destroyAllWindows()
dilate = cv2.dilate(erosion, kernel, iterations=1)
cv2.imshow('dilate', dilate)
cv2.waitKey(0)
cv2.destroyAllWindows()
1.cv2.morphologyEx(src, op, kernel) 进行各类形态学的变化
参数说明:src传入的图片,op进行变化的方式, kernel表示方框的大小
2.op = cv2.MORPH_OPEN 进行开运算,指的是先进行腐蚀操作,再进行膨胀操作
闭运算:表示先进行膨胀操作,再进行腐蚀操作
#先腐蚀,再膨胀
img =cv2.imread('dige.png')
kernel = np.ones((5,5,),np.uint8)
opening = cv2.morphologyEx(img,cv2.MORPH_OPEN,kernel)
cv2.imshow('opening',opening)
cv2.waitKey(0)
cv2.destroyAllWindows()
#闭:先膨胀,再腐蚀
img =cv2.imread('dige.png')
kernel = np.ones((3,3),np.uint8)
closing = cv2.morphologyEx(img,cv2.MORPH_CLOSE,kernel)
cv2.imshow('closing',closing)
cv2.waitKey(0)
cv2.destroyAllWindows()
1.op = cv2.GRADIENT 用于梯度运算-膨胀图像-腐蚀后的图像
梯度运算:表示的是将膨胀以后的图像 - 腐蚀后的图像,获得了最终的边缘轮廓
代码:
第一步:读取pie图片
第二步:进行腐蚀和膨胀操作
第三步:将膨胀的图像 - 腐蚀的图像,获得相减得图像
第四步:使用cv2.morphologyEx(src, cv2.GRADIENT, kernel) 获得梯度运算的图片的操作
第五步:绘制第三步和第四步生成的图片
import cv2
import numpy as np
# 第一步:读取图片
pie = cv2.imread('pie.png')
# 第二步:绘制腐蚀和膨胀图片
kernel = np.ones((5, 5), np.uint8)
erosion = cv2.erode(pie, kernel, iterations=2)
dilate = cv2.dilate(pie, kernel, iterations=2)
# 第三步:相减获得对应的图片 ,膨胀-腐蚀
decrease = dilate - erosion
print(decrease.shape)
cv2.imshow('pie', pie)
cv2.waitKey(0)
cv2.destroyAllWindows()
# 第四步:使用cv2.MORPH_GRADIENT获得梯度运算的图片
gradient = cv2.morphologyEx(pie, cv2.MORPH_GRADIENT, kernel, iterations=2)
# 第五步:绘制两者的图片
cv2.imshow('gradient', np.hstack((decrease, gradient)))
cv2.waitKey(0)
cv2.destroyAllWindows()
import cv2
import numpy as np
# 第一步读入当前图片
img = cv2.imread('dige.png')
cv2.imshow('img', img)
cv2.waitKey(0)
cv2.destroyAllWindows()
# 第二步:使用cv2.MORPH_TOPHAT获得礼帽图片
kernel = np.ones((3, 3), np.uint8)
tophat = cv2.morphologyEx(img, cv2.MORPH_TOPHAT, kernel)
cv2.imshow('tophat', tophat)
cv2.waitKey(0)
cv2.destroyAllWindows()
# 第三步:使用cv2.MORPH_BLACKHAT获得黑帽图片 黑帽=闭运算-原始输入
kernel = np.ones((3, 3), np.uint8)
blackhat = cv2.morphologyEx(img, cv2.MORPH_BLACKHAT, kernel)
cv2.imshow('blackhat', blackhat)
cv2.waitKey(0)
cv2.destroyAllWindows()