【发布时间】:2019-04-28 15:16:06
【问题描述】:
我正在尝试将由 scikit-image 和 scipy 处理的图像添加到 tkinter gui。要将其添加到画布,需要将其保存为 png,或转换为 PIL 图像。但是,当我尝试使用ImageTk 的Image.fromarray() 时,图像会严重失真。我不希望将其保存为 png,因为它只是生成数据标签的中间步骤。
我尝试检查数组的形状,它们是相同的。我尝试打印出图像,并且填充对象是正确的图像,而 im 被扭曲了。所以在 Tkinter gui 中这不是问题。另外,如果我不使用np.asarray(),它会产生相同的输出。
def generateCanny(imageName):
#imagename should be a path to the image, created with os path join
img = skimage.io.imread(imageName)
print('orig {}'.format(img.shape))
gray = np.sqrt((img*img).sum(-1))
#converts the image to greyscale
edges = skimage.feature.canny(gray, sigma=3)
fill = scipy.ndimage.binary_fill_holes(edges)
return fill
imageName = os.path.join(imagePath, imageStr)
filled_objects = generateCanny(imageName)
a = np.asarray(filled_objects)
im = PIL.Image.fromarray(a)
这是两张图片,im 在左边,filled_objects 在右边
我认为您可以轻松转换它,因为filled_objects 只是一个数组,但Image.fromarray() 必须进行一些处理。
【问题讨论】:
标签: python-3.x tkinter python-imaging-library scikit-image