图像形态学变换 膨胀和腐蚀 开闭运算 边缘检测 opencv实现
一. 官方文档:
dilate(膨胀):
cv.erode(腐蚀)的使用和其类似。
二. 实验:膨胀和腐蚀
1 # Writer : wojianxinygcl@163.com 2 # Date : 2020.3.22 3 import cv2 as cv 4 import numpy as np 5 6 image = cv.imread("../paojie.jpg") 7 image = cv.cvtColor(image,cv.COLOR_RGB2GRAY) 8 # 得到二值图像 定义阈值为127 9 #ret,thresh1 = cv.threshold(image,127,255,cv.THRESH_BINARY) 10 # 得到二值图像 自动计算合适的阈值 11 ret,thresh1 = cv.threshold(image,0,255,cv.THRESH_BINARY+cv.THRESH_OTSU) 12 Black_and_White = thresh1.copy() 13 14 # 得到腐蚀图像,3*3为卷积核大小 15 erode_result = cv.erode(thresh1,(3,3)) 16 # 得到膨胀图像,3*3为卷积核大小 17 dilate_result = cv.dilate(thresh1,(3,3)) 18 19 cv.imshow('Black_and_White',Black_and_White) 20 cv.imshow("erode_result", erode_result) 21 cv.imshow("dilate_result",dilate_result) 22 cv.waitKey(0) 23 cv.destroyAllWindows()
三. 实验输出:
四. 实验:开闭运算
1 # Writer : wojianxinygcl@163.com 2 # Date : 2020.3.22 3 import cv2 as cv 4 import numpy as np 5 6 image = cv.imread("../paojie.jpg") 7 image = cv.cvtColor(image,cv.COLOR_RGB2GRAY) 8 # 得到二值图像 定义阈值为127 9 #ret,thresh1 = cv.threshold(image,127,255,cv.THRESH_BINARY) 10 # 得到二值图像 自动计算合适的阈值 11 ret,thresh1 = cv.threshold(image,0,255,cv.THRESH_BINARY+cv.THRESH_OTSU) 12 Black_and_White = thresh1.copy() 13 14 # 闭运算 15 closing = cv.morphologyEx(thresh1, cv.MORPH_CLOSE, kernel=(3,3)) 16 # 开运算 17 opening = cv.morphologyEx(thresh1, cv.MORPH_OPEN, kernel=(3,3)) 18 19 cv.imshow('Black_and_White',Black_and_White) 20 cv.imshow("closing", closing) 21 cv.imshow("opening", opening) 22 cv.waitKey(0) 23 cv.destroyAllWindows()
五. 实验输出:
六. Morphological Gradient 形态学梯度 用于检测图像边缘,得到图像轮廓
膨胀和腐蚀的差值得到:图像边缘
函数:gradient = cv.morphologyEx(img, cv.MORPH_GRADIENT, kernel)
七. 实验结果:
八. 写在最后的话:
创作不易,如果本文对您有帮助,记得点赞哦!
九. 版权声明:
未经作者允许,请勿随意转载抄袭,抄袭情节严重者,作者将考虑追究其法律责任,创作不易,感谢您的理解和配合!