OpenCV--图像的形态学处理
Posted sccq
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了OpenCV--图像的形态学处理相关的知识,希望对你有一定的参考价值。
形态学-腐蚀操作
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) #迭代次数 cv2.imshow(‘erosion‘, erosion) cv2.waitKey(0) cv2.destroyAllWindows()
效果:
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()
效果:
形态学-膨胀操作
kernel = np.ones((3,3),np.uint8) dige_erosion = cv2.erode(img,kernel,iterations = 1) 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()
效果:
开运算与闭运算
# 开:先腐蚀,再膨胀 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--图像的形态学处理的主要内容,如果未能解决你的问题,请参考以下文章