图像形态学处理
腐蚀操作 cv2.erode()
用腐蚀操作就能够去掉这些毛刺
毛刺都没有了,线条变细了
#形态学-腐蚀操作 img = cv2.imread('dige.png') cv2.imshow('img', img) cv2.waitKey(0) cv2.destroyAllWindows() kernel = np.ones((3,3),np.uint8) erosion = cv2.erode(img,kernel,iterations = 1) #iterations是迭代次数 cv2.imshow('erosion', erosion) cv2.waitKey(0) cv2.destroyAllWindows()
iteration改成2、3就更细了
pie = cv2.imread('pie.png') cv2.imshow('pie', pie) cv2.waitKey(0) cv2.destroyAllWindows() kernel = np.ones((30,30),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) res = np.hstack((erosion_1,erosion_2,erosion_3)) cv2.imshow('res', res) cv2.waitKey(0) cv2.destroyAllWindows()
膨胀操作 cv2.dilate()
膨胀操作可以让变细的线条变粗,和腐蚀操作是互为逆操作的
腐蚀是在这种混合的情况下都变黑,而膨胀是在这种情况下都变白
#形态学-膨胀操作 img = cv2.imread('dige.png') cv2.imshow('img', img) cv2.waitKey(0) cv2.destroyAllWindows() kernel = np.ones((3,3),np.uint8) dige_erosion = cv2.erode(img,kernel,iterations = 1) cv2.imshow('erosion', erosion) cv2.waitKey(0) cv2.destroyAllWindows()
kernel = np.ones((3,3),np.uint8) dige_dilate = cv2.dilate(dige_erosion,kernel,iterations = 1) cv2.imshow('dilate', dige_dilate) cv2.waitKey(0) cv2.destroyAllWindows() pie = cv2.imread('pie.png') kernel = np.ones((30,30),np.uint8) dilate_1 = cv2.dilate(pie,kernel,iterations = 1) dilate_2 = cv2.dilate(pie,kernel,iterations = 2) dilate_3 = cv2.dilate(pie,kernel,iterations = 3) res = np.hstack((dilate_1,dilate_2,dilate_3)) cv2.imshow('res', res) cv2.waitKey(0) cv2.destroyAllWindows()
开运算与闭运算 cv2.morphologyEx()
开:先腐蚀再膨胀
闭:先膨胀再腐蚀
#开运算与闭运算 # 开:先腐蚀,再膨胀 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((5,5),np.uint8) closing = cv2.morphologyEx(img, cv2.MORPH_CLOSE, kernel) cv2.imshow('closing', closing) cv2.waitKey(0) cv2.destroyAllWindows()
梯度运算
梯度=膨胀-腐蚀
提取轮廓
#梯度运算 pie = cv2.imread('pie.png') kernel = np.ones((7,7),np.uint8) dilate = cv2.dilate(pie,kernel,iterations = 5) erosion = cv2.erode(pie,kernel,iterations = 5) res = np.hstack((dilate,erosion)) cv2.imshow('res', res) cv2.waitKey(0) cv2.destroyAllWindows() gradient = cv2.morphologyEx(pie, cv2.MORPH_GRADIENT, kernel) cv2.imshow('gradient', gradient) cv2.waitKey(0) cv2.destroyAllWindows()
礼貌与黑帽
礼帽 = 原始输入-开运算结果
提取出刺来
黑帽 = 闭运算-原始输入
只留下一个大致轮廓
#礼帽与黑帽 #礼帽 = 原始输入-开运算结果 #黑帽 = 闭运算-原始输入 #礼帽 img = cv2.imread('dige.png') tophat = cv2.morphologyEx(img, cv2.MORPH_TOPHAT, kernel) cv2.imshow('tophat', tophat) cv2.waitKey(0) cv2.destroyAllWindows() #黑帽 img = cv2.imread('dige.png') blackhat = cv2.morphologyEx(img,cv2.MORPH_BLACKHAT, kernel) cv2.imshow('blackhat ', blackhat ) cv2.waitKey(0) cv2.destroyAllWindows()
OpenCV四) —— 图像形态学处理(腐蚀操作 & 膨胀操作 & 开运算与闭运算 & 梯度运算 & 礼貌与黑帽)
于 2020-10-01 21:21:35 首次发布