python 简单图像处理(13)

我们直接看图吧

我们把粗框内的区域看作原图像

假设有一个圆在图像空间移动,取一个点作为圆的中心,若圆的区域被完全包含在原图像中

则我们把它放到腐蚀后的区域中

若只有一部分在原图像区域或没有一个点在原图区域中,我们则不会把它放在腐蚀区中

显然,粗框区域腐蚀后会变成内部填充框区域

而膨胀却恰恰相反

把粗框线看作原图的话,取原图上一点为圆的中心,所以在圆的区域都被放在膨胀区

显然,膨胀后,原图会变成外边框的区域

上面,我们是以圆为窗的,事实上你可以使用任意窗形,不过最好有一个中心点

好啦,我们来看看利用腐蚀和膨胀有什么效果吧

import cv

def Two(image):
w = image.width
h = image.height
size = (w,h)
iTwo = cv.CreateImage(size,8,1)
for i in range(h):
for j in range(w):
iTwo[i,j] = 0 if image[i,j] <220 else 255
return iTwo

def Corrode(image):
w = image.width
h = image.height
size = (w,h)
iCorrode = cv.CreateImage(size,8,1)
kH = range(2)+range(h-2,h)
kW = range(2)+range(w-2,w)
for i in range(h):
for j in range(w):
if i in kH or j in kW:
iCorrode[i,j] = 255
elif image[i,j] == 255:
iCorrode[i,j] = 255
else:
a = []
for k in range(5):
for l in range(5):
a.append(image[i-2+k,j-2+l])
if max(a) == 255:
iCorrode[i,j] = 255
else:
iCorrode[i,j] = 0
return iCorrode

def Expand(image):
w = image.width
h = image.height
size = (w,h)
iExpand = cv.CreateImage(size,8,1)
for i in range(h):
for j in range(w):
iExpand[i,j] = 255
for i in range(h):
for j in range(w):
if image[i,j] == 0:
for k in range(5):
for l in range(5):
if -1<(i-2+k)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值