栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

2021-11-15 cv2.erode()和cv2.dilate()的原理理解

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

2021-11-15 cv2.erode()和cv2.dilate()的原理理解

文章目录
  • 一、cv2.erode()和cv2.dilate()的运行原理


一、cv2.erode()和cv2.dilate()的运行原理

cv2.erode()是进行腐蚀用的,具体原理就是通过和卷积核进行操作,
以0和1为例 ,如果卷积核范围内有一个不是1,那么这点就为0,全是1的话这个点才为1。
而且他进行活动后的这个像素并不会影响下一个像素的改变,就是说这个值原本是0,经过操作后变为了1,但是相邻像素进行判断时还是把它当0。

示例代码如下:
import numpy as np
import matplotlib.pyplot as plt
import cv2
a=[[1,1,0,0,0,0,0],[1,0,0,1,0,0,0],[0,0,0,1,0,0,0],[0,0,0,1,0,0,0],[0,0,0,1,0,0,0],[0,0,0,1,0,0,0],[0,0,0,0,0,0,0],[0,0,0,0,0,0,0]]
#a[i][j]   i 是y j是x
a=np.array(a,np.uint8)
print(a.shape)#(8,7)
kernel = kernelY = cv2.getStructuringElement(cv2.MORPH_RECT, (1,3))#[[1][1][1]]
print(kernel)
print(kernel.shape)
plt.subplot(121)
plt.imshow(a)
plt.grid()

plt.subplot(122)
a_erode=cv2.erode(a,kernel,iterations=1)
plt.imshow(a_erode)
plt.grid()

plt.show()


这个图左边是原始图像,右边是处理后的图像,可以看出他是根据像素上下两点进行判断。注意kernel = kernelY = cv2.getStructuringElement(cv2.MORPH_RECT, (1,3))#[[1][1][1]]这里的(1,3)是三行一列,不是一行三列,我也不太清楚是怎么回事o(╥﹏╥)o。
a_erode=cv2.erode(a,kernel,iterations=1)的iterations可以立即为运行几次,即在这个卷积核的基础下收缩几次。

cv2.dilate()原理也大致相同,只不过规则是卷积核范围内只要有一个点是一这个点就是1,全是0他才为零。

如果有理解不到位的地方,希望大家指正。ε≡٩(๑>₃<)۶ 一心向学!


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/503527.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号