Вы можете сохранять и считывать 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])
Документация доступна здесь .
В качестве альтернативы, как предложено в комментариях @WarrenWekesser, вы можете использовать файл 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
,описано здесь и здесь .
Это очень простой формат, который вы можете писать и читать самостоятельно, и имеет то преимущество, что другие пакеты, такие как ImageMagick и GIMP понимают это, поэтому вы можете сохранить свои данные в виде PFM
файла и затем преобразовать в командной строке с ImageMagick в JPEG
или PNG
дляпросмотр:
magick image.pfm -auto-level result.png