我正在尝试使用 scipy 来做erosion http://docs.scipy.org/doc/scipy/reference/generated/scipy.ndimage.morphology.binary_erosion.html and dilation http://docs.scipy.org/doc/scipy/reference/generated/scipy.ndimage.morphology.binary_dilation.html图像的。使用 scipy 似乎非常简单 ->binary_erosion / dialation
。然而,输出根本不是预期的。
这是我的基本代码:
import scipy
from scipy import ndimage
import matplotlib.pyplot as plt
import numpy as np
import Image
#im = Image.open('flower.png')
im = ndimage.imread('flower.png')
im = ndimage.binary_erosion(im).astype(np.float32)
scipy.misc.imsave('erosion.png', im)
im2 = Image.open('flower.png')
im2 = ndimage.binary_dilation(im2)
scipy.misc.imsave('dilation.png', im2)
这是输出:
膨胀的输出只是原始“flower.png”的全白图像
我相信我必须指定一个更好的内核或掩码,但我不太确定为什么我会得到绿色的侵蚀输出和完全白色的膨胀输出。
我使用的是二元侵蚀而不是灰色侵蚀 http://docs.scipy.org/doc/scipy/reference/generated/scipy.ndimage.morphology.grey_erosion.html#scipy.ndimage.morphology.grey_erosion大批。我使用以下方法将原始图像转换为灰度图像flatten=true
像这样:
im = scipy.misc.imread('flower.png', flatten=True).astype(np.uint8)
然后打电话:
im1 = ndimage.grey_erosion(im, size=(15,15))
并得到了一张很好的侵蚀图片,尽管它是灰度的。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)