膨胀算法:用3X3的结构元素,扫描二值图像的每一个像素,用结构元素与其覆盖的二值图像做“与”运算,使二值图像扩大一圈。
腐蚀算法:用3X3的结构元素,扫描二值图像的每一个像素,用结构元素与其覆盖的二值图像做“与”运算,使二值图像减小一圈。
闭运算用来连接被误分为许多小块的对象,而开运算用于移除由图像噪音形成的斑点
#coding:utf-8
"""
opencv形态学处理
"""
import cv2
import numpy as np
import matplotlib.pyplot as plt
img = cv2.imread('images/figure_6.png')
cv2.imshow('original image',img)
#定义3*3的十字形结构元素
kernel = cv2.getStructuringElement(cv2.MORPH_RECT,(3,3))
#cv2.dilate膨胀图像
dilated = cv2.dilate(img,kernel)
cv2.imshow('dilated image',dilated)
#cv2.erode腐蚀图像
eroded = cv2.erode(img,kernel)
cv2.imshow('eroded image',eroded)
#对图像进行开运算去除噪音
opened = cv2.morphologyEx(img,cv2.MORPH_OPEN,kernel)
cv2.imshow('open img',opened)
#对图像进行闭运算连接主要信息
closed = cv2.morphologyEx(img,cv2.MORPH_CLOSE,kernel)
cv2.imshow('closed img',closed)
cv2.waitKey(0)
cv2.destroyAllWindows()
结果
原图:
腐蚀:
膨胀:
闭运算:
开运算: