opencv python 学习第三天 图片腐蚀和膨胀

定义一个5x5的结构:kernel=np.uint8(np.zeros((5,5)))

(1)腐蚀操作:

定义了一个5×5的十字形结构元素 其实是一个5x5的矩阵,我们知道在图片的腐蚀过程,对图片的每个点,使用这个结构扫描每一个点,用结构元素与其覆盖的二值图像做“与”操作,如果都为1,结果图像的该像素为1。否则为0,腐蚀处理的结果是使原来的二值图像减小一圈。

#00100
#00100
#11111
#00100
#00100

使用的函数:cv2.erode(img,kernel);

(2)膨胀操作:

使用同样的结构,对图片的每个点,使用这个结构扫描每一个点,用结构元素与其覆盖的二值图像做“与”操作,如果出现1,结果图像的该像素为1。否则为0,腐蚀处理的结果是使原来的二值图像扩大一圈。

使用的函数:cv2.dilate(img,kernel)

两张图片相减得到图片的边缘。

代码:

#encoding=utf-8
import cv2  
import numpy as np  
#定义了一个5×5的十字形结构元素,
#用结构元素与其覆盖的二值图像做“与”操作
#如果都为1,结果图像的该像素为1。否则为0
#腐蚀处理的结果是使原来的二值图像减小一圈。
#00100
#00100
#11111
#00100
#00100
kernel=np.uint8(np.zeros((5,5)))
for x in range(5):
	kernel[x,2]=1;
	kernel[2,x]=1;
#读入图片
img = cv2.imread('./1.jpg',0)
#腐蚀图像 
eroded=cv2.erode(img,kernel);
#膨胀图像  
dilated = cv2.dilate(img,kernel)



#将两幅图像相减获得边,第一个参数是膨胀后的图像,第二个参数是腐蚀后的图像  
result = cv2.absdiff(dilated,eroded);  
#取反
x=0;
y=0;
width=result.shape[0]
height=result.shape[1]
while x
结果




你可能感兴趣的:(opencv,学习)