您的位置:首页 > 编程语言 > Python开发

python 简单图像处理(13)

2015-06-30 22:54 741 查看
我们直接看图吧

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

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

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

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

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

而膨胀却恰恰相反

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

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

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

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

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)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: