gpt4 book ai didi

python - Skimage - 调整大小功能的奇怪结果

转载 作者:太空狗 更新时间:2023-10-30 00:34:29 26 4
gpt4 key购买 nike

我正在尝试使用 skimage.transform.resize 函数 调整 .jpg 图像的大小。函数返回奇怪的结果(见下图)。我不确定这是错误还是只是错误地使用了该功能。

import numpy as np
from skimage import io, color
from skimage.transform import resize

rgb = io.imread("../../small_dataset/" + file)
# show original image
img = Image.fromarray(rgb, 'RGB')
img.show()

rgb = resize(rgb, (256, 256))
# show resized image
img = Image.fromarray(rgb, 'RGB')
img.show()

原图:

original

调整大小的图像:

resized

我已经检查过了skimage resize giving weird output ,但我认为我的错误具有不同的属性。

更新:rgb2lab 函数也有类似的错误。

最佳答案

问题是 skimage 在调整图像大小后转换数组的像素数据类型。原始图像每像素 8 位,类型为 numpy.uint8,调整后的像素为 numpy.float64 变量。

调整大小操作正确,但结果显示不正确。为了解决这个问题,我提出了两种不同的方法:

  1. 更改数据结构 生成的图像。在更改为 uint8 值之前,必须将像素转换为 0-255 比例,因为它们处于 0-1 标准化比例:

     # ...
    # Do the OP operations ...
    resized_image = resize(rgb, (256, 256))
    # Convert the image to a 0-255 scale.
    rescaled_image = 255 * resized_image
    # Convert to integer data type pixels.
    final_image = rescaled_image.astype(np.uint8)
    # show resized image
    img = Image.fromarray(final_image, 'RGB')
    img.show()

更新:根据 scipy.misc.imshow,此方法已弃用

  1. 使用另一个库 来显示图像。看看 Image library documentation , 没有任何模式支持 3xfloat64 像素图像。然而,scipy.misc库有适当的工具来转换数组格式以正确显示它:
from scipy import misc
# ...
# Do OP operations
misc.imshow(resized_image)

关于python - Skimage - 调整大小功能的奇怪结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44257947/

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