python图形-形态学变换-侵蚀

形态学变换:基于图像形状的一些简单操作,一般基于单通道图处理(常用灰度图)

一般有两个输入,一个是要操作的图片,另一个是要变换的结构元素(核)

两种基本形态学变换:侵蚀和膨胀,他们的变种也有张开和闭合。

 

第一步:导入一些包和图像:

import cv2
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline

img = cv2.imread('./i.png') #导入图像

img .shape #可注释

gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY) #由彩色图转换为灰度图

gray.shape #可注释

plt.imshow(gray,cmap='gray') #打印灰度图

示例图片:

 

 

第二步:侵蚀操作,侵蚀,常用在去除一些小的白色噪点,还有将两个连起来的形状给打散掉 。

a.和函数3X3,迭代次数为1

# 和函数3X3,迭代次数1
kernel = np.ones((3,3),dtype=np.int8)
ersion1= cv2.erode(gray.copy(),kernel,iterations=1)

plt.imshow(ersion1,cmap='gray')

b.和函数5X5,迭代次数1

# 和函数5X5,迭代次数1
kernel = np.ones((5,5),dtype=np.int8)
ersion2= cv2.erode(gray.copy(),kernel,iterations=1)

plt.imshow(ersion2,cmap='gray')

c.和函数5X5,迭代次数2

# 和函数3X3,迭代次数2
kernel = np.ones((5,5),dtype=np.int8)
ersion3= cv2.erode(gray.copy(),kernel,iterations=2)

plt.imshow(ersion3,cmap='gray')

总例:

fig,(ax1,ax2,ax3,ax4) = plt.subplots(1,4,figsize=(20,8),sharex=True,sharey=True)

ax1.axis('off')
ax1.imshow(gray.copy(),cmap='gray')
ax1.set_title('orginal image')

ax2.axis('off')
ax2.imshow(ersion1,cmap='gray')
ax2.set_title('3X3,1')

ax3.axis('off')
ax3.imshow(ersion2,cmap='gray')
ax3.set_title('5X5,1')

ax4.axis('off')
ax4.imshow(ersion3,cmap='gray')
ax4.set_title('5X5,2')

示例图片:

 

posted @ 2023-06-17 00:28  沉梦昂志_doc  阅读(38)  评论(0编辑  收藏  举报