Python+OpenCV图像处理之开闭操作
2020-12-13 04:14
标签:重要 mamicode info dem open com 面积 show read 开操作:图像形态学的重要操纵之一,基于膨胀与腐蚀操作组合形成的;主要是应用在二值图像分析中,灰度图像亦可 开操作 = 腐蚀+膨胀 ,输入图像 + 结构元素 作用:用来消除小物体、平滑较大物体的边界的同时并不明显改变其面积,提取水平或竖直的线 闭操作:图像形态学的重要操纵之一,基于膨胀与腐蚀操作组合形成的;主要是应用在二值图像分析中,灰度图像亦可 闭操作 = 膨胀+腐蚀 ,输入图像 + 结构元素 作用:用来填充物体内细小空洞、连接邻近物体、平滑其边界的同时并不明显改变其面积 python实现 开操作结果,尽量保留其他结构元素不变,消除小物体 当我们改变内核的大小,就能达到不同的效果,比如我们设置ksize=(15,1),就可以提取图像中的水平直线 同理,我们让ksize=(1,15),就可以提取图像中的垂直直线。结果如下 闭操作结果,填充封闭区域,其他保持不变 当我们改变内核的形状,也能达到不同的效果,比如提取图像中的圆 结果如下 src参数:输入图像 op参数:操作类型 MORTH_OPEN 函数做开运算 MORTH_CLOSE 函数做闭运算 MORTH_GRADIENT 函数做形态学梯度运算 MORTH_TOPHAT 函数做顶帽运算 MORTH_BLACKHAT 函数做黑帽运算 MORTH_DILATE 函数做膨胀运算 MORTH_ERODE 函数做腐蚀运算 kernel参数 :内核类型,用getStructuringElement函数得到 Python+OpenCV图像处理之开闭操作 标签:重要 mamicode info dem open com 面积 show read 原文地址:https://www.cnblogs.com/qianxia/p/11106090.htmlimport cv2
def open_demo(image):
print(image.shape)
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
ret, binary = cv2.threshold(gray, 0, 255, cv2.THRESH_BINARY | cv2.THRESH_OTSU)
cv2.imshow("binary", binary)
kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (5, 5))
binary = cv2.morphologyEx(binary, cv2.MORPH_OPEN, kernel)
cv2.imshow("open result", binary)
def close_demo(image):
print(image.shape)
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
ret, binary = cv2.threshold(gray, 0, 255, cv2.THRESH_BINARY | cv2.THRESH_OTSU)
cv2.imshow("binary", binary)
kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (5, 5))
binary = cv2.morphologyEx(binary, cv2.MORPH_CLOSE, kernel)
cv2.imshow("close result", binary)
if __name__ == "__main__":
img = cv2.imread("image/open.jpg")
cv2.namedWindow("input image",cv2.WINDOW_AUTOSIZE)
cv2.imshow("input image", img)
open_demo(img)
cv2.waitKey(0)
cv2.destroyAllWindows()
kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (15, 1))
binary = cv2.morphologyEx(binary, cv2.MORPH_OPEN, kernel)
kernel = cv2.getStructuringElement(cv2.MORPH_ELLIPSE, (5, 5))
binary = cv2.morphologyEx(binary, cv2.MORPH_CLOSE, kernel)