gpt4 book ai didi

python-3.x - 保存 'float' numpy 图像

转载 作者:行者123 更新时间:2023-12-01 01:44:31 27 4
gpt4 key购买 nike

这是我目前使用的代码:

from PIL import Image
import numpy as np

def save_np_img(np_img, path, name):
"""
To save the image.
:param np_img: numpy_array type image
:param path: string type of the existing path where to save the image
:param name: string type that includes the format (ex:"bob.png")
:return: numpy array
"""

assert isinstance(path, str), 'Path of wrong type! (Must be String)'
assert isinstance(name, str), 'Name of wrong type! (Must be String)'

im = Image.fromarray(np_img)
im.save(path + name)

return np_img

我希望能够保存包含 float 的图像值,就像我目前可以保存 int有值(value)的图像。

我得到一个 TypeError当我尝试保存已通过 np.divide(img, 255.) 转换的图像时的消息,因此在尝试保存包含浮点数的 numpy_arrays 时。

(你也可以推荐其他图书馆。)

注意:这些值,当不是 0 到 255 之间的整数时,是 0 到 1 之间的浮点数。对我来说,尽可能保持无损是至关重要的。我最初的想法是我可以简单地使用 np.multiply(img, 255)但我不确定这是否会失去一些精度(实际上它也不会返回整数)。

编辑:基本上是 this方法是无损转换?也就是说,如果我有一个 ints 的 numpy_array , 除以 255. ,然后重新转换为 ints ,我会丢失信息吗?如果是这样,如何避免?

最佳答案

您可以保存和回读 numpy无损和原生的浮点数组,不需要任何库:

import numpy as np

# Create 10 random floats in range 0..1 in array "b"
b = np.random.random_sample((10,)).astype(np.float32)

# Save to file
np.save('BunchOfFloats.npy',b)

# Read back into different array "r"
r = np.load('BunchOfFloats.npy')

# Inspect b
array([0.26565347, 0.7193414 , 0.19435954, 0.58980538, 0.28096624,
0.88655137, 0.84847042, 0.80156026, 0.94315194, 0.76888901])

# Inspect r
array([0.26565347, 0.7193414 , 0.19435954, 0.58980538, 0.28096624,
0.88655137, 0.84847042, 0.80156026, 0.94315194, 0.76888901])

文档可用 here .

或者,正如@WarrenWekesser 的评论中所建议的那样,您可以使用可以存储浮点数甚至 double 数的 TIFF 文件。
import numpy as np
from tifffile import imsave

# Generate float data
b=np.random.random_sample((768,1024,3)).astype(np.float32)

# Save as TIF - when reading, use "data = imread('file.tif')"
imsave('result.tif',b)

另一种选择是 PFM文件,描述 herehere .

这是一种非常简单的格式,您可以自己编写和阅读,并且具有其他软件包(例如 )的优点。 ImageMagick GIMP 理解它,所以你可以将你的数据保存为 PFM文件,然后在命令行中使用 进行转换ImageMagick JPEGPNG查看:
magick image.pfm -auto-level result.png

关于python-3.x - 保存 'float' numpy 图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52490653/

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