【发布时间】:2018-06-15 18:18:53
【问题描述】:
我正在使用 PIL 并尝试对图像使用中值滤波器以对其进行去噪。但是当我尝试时,结果是黑色图像。我认为问题的原因是图像属于“PIL.Image.Image”类。
让我更深入地解释一下我在做什么/这个问题。我不得不使用 numpy 执行一些图像处理。为了做到这一点,我首先必须将 PIL 图像转换为 numpyArray。我用以下代码做到了这一点:
img = np.array(image)
执行所需的转换后,我使用以下代码将图像转换回 PIL:
def numpy_to_pil(image):
minv = np.amin(image)
maxv = np.amax(image)
img = Image.fromarray((255 * (image - minv) / (maxv - minv)).astype(np.uint8))
return img
当我尝试使用中值滤波器过滤“img”时,如前所述,结果是黑色图像。这就是我使用 PIL 的过滤功能的方式:
img.filter(ImageFilter.MedianFilter(3))
我尝试将结果与未通过“img”的铸造过程的图像(我们称之为“猫”(字面意思是猫的图像))进行比较。我尝试打印出类型,看看有什么不同。结果如下:
cat = <class 'PIL.PngImagePlugin.PngImageFile'>
img = <class 'PIL.Image.Image'>
看到这个我想知道问题是否是'img'的类型是'PIL.Image.Image'而不是'PIL.PngImagePlugin.PngImageFile'。将 numpyArray 转换为 PIL 时我做错了什么吗?或者是别的什么。
非常感谢任何帮助! (我尽量做到具体)
P.S:噪音的类型是椒盐
P.P.S:我尝试使用img.convert('PIL.PngImagePlugin.PngImageFile'),但它输出以下错误:
不支持从 RGB 转换为 PIL.PngImagePlugin.PngImageFile
【问题讨论】:
-
我不明白为什么我的答案有效,所以我缩小了问题范围并询问了here。我已经编辑了我的问题以说明问题发生的原因。
标签: python numpy python-imaging-library imagefilter