gpt4 book ai didi

python - 复制 numpy 数组值时获取图片的负片

转载 作者:太空狗 更新时间:2023-10-30 02:58:26 33 4
gpt4 key购买 nike

我正在尝试手动复制图像,但是当我这样做时,结果是原始图像的负片。我似乎无法找出原因,所以请帮忙。

这是代码:

def copy(image):
padded_image = np.ndarray(shape=image.shape)
for i in xrange(0, image.shape[0]):
for j in xrange(0, image.shape[1]):
padded_image[i][j] = image[i][j]

return padded_image

enter image description here

这是我阅读图片的方式:

jelly_beans = io.imread("4.1.07-jelly-beans.tiff")

这就是我显示图像的方式:

    def show_images(images, titles = None):

"""Display a list of images"""
n_ims = len(images)
if titles is None: titles = ['(%d)' % i for i in range(1,n_ims + 1)]
fig = plt.figure()
n = 1
for image,title in zip(images,titles):
a = fig.add_subplot(1,n_ims,n) # Make subplot
if image.ndim == 2: # Is image grayscale?
plt.gray()
plt.imshow(image)
a.set_title(title)
n += 1
fig.set_size_inches(np.array(fig.get_size_inches()) * n_ims)
plt.show()

最佳答案

问题是,当您使用 ndarray 创建 padded_image 时,您没有指定 dtype,因此它默认为 float 。然后你使用 imshow 来显示一个 float 组,其值在 [0, 1] 范围内没有标准化,所以 imshow 会做一些它自己的标准化,导致“相反”的颜色。 (并不是所有的浮点图像都会像那样反转。)

你可以通过使用

来解决这个问题
padded_image = np.ndarray(shape=image.shape, dtype=image.dtype)

这应该可以解决眼前的问题。更好的解决方法是不编写自己的 copy 函数。 numpy ndarray 有一个 copy 方法,所以你可以这样做,例如,

image2 = image1.copy()

关于python - 复制 numpy 数组值时获取图片的负片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34000660/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com