【问题标题】:Numpy array to PIL image formatNumpy 数组到 PIL 图像格式
【发布时间】:2018-11-22 03:26:55
【问题描述】:

我正在尝试将图像从 numpy 数组格式转换为 PIL 格式。这是我的代码:

img = numpy.array(image)
row,col,ch= np.array(img).shape
mean = 0
# var = 0.1
# sigma = var**0.5
gauss = np.random.normal(mean,1,(row,col,ch))
gauss = gauss.reshape(row,col,ch)
noisy = img + gauss
im = Image.fromarray(noisy)

此方法的输入是 PIL 图像。此方法应将高斯噪声添加到图像中,并再次将其作为 PIL 图像返回。

非常感谢任何帮助!

【问题讨论】:

  • 你的代码有问题吗?问题是什么?
  • 现在重新添加信息,不知道为什么问题发布后没有显示出来
  • PIL 已弃用,请改用skimage
  • 不,PIL 替代品是 Pillow(虽然 skimage 很棒,但它有不同的目标群体)。作者真的应该阅读近距离投票和第一条评论并对这些做出反应。无论是什么问题,都可能与类型有关(例如 uint8 图像;高斯显然是连续的/float_double 导致类型更改)。提示:这里有类似的问题!
  • 我建议您按照stackoverflow.com/a/10967471/8033585 中概述的步骤操作,除了将颜色图步骤替换为“添加噪点”,例如添加噪点、重新缩放(0-255)、转换为uint8 等。跨度>

标签: python image numpy python-imaging-library


【解决方案1】:

在我的 cmets 中,我的意思是你做这样的事情:

import numpy as np
from PIL import Image

img = np.array(image)
mean = 0
# var = 0.1
# sigma = var**0.5
gauss = np.random.normal(mean, 1, img.shape)

# normalize image to range [0,255]
noisy = img + gauss
minv = np.amin(noisy)
maxv = np.amax(noisy)
noisy = (255 * (noisy - minv) / (maxv - minv)).astype(np.uint8)

im = Image.fromarray(noisy)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-11-13
    • 2017-06-25
    • 2019-02-26
    • 2010-09-27
    • 2010-10-06
    • 2019-06-04
    • 2017-08-31
    相关资源
    最近更新 更多