您想使用该
freeimage库来这样做:
import numpy as npfrom skimage import io, exposure, img_as_uint, img_as_floatio.use_plugin('freeimage')im = np.array([[1., 2.], [3., 4.]], dtype='float64')im = exposure.rescale_intensity(im, out_range='float')im = img_as_uint(im)io.imsave('test_16bit.png', im)im2 = io.imread('test_16bit.png')结果:
[[ 0 21845] [43690 65535]]
对于3D数组,您需要正确地构建数组,然后它才能工作:
# im = np.array([[1, 2.], [3., 4.]], dtype='float64')im = np.linspace(0, 1., 300).reshape(10, 10, 3)im = exposure.rescale_intensity(im, out_range='float')im = img_as_uint(im)io.imsave('test_16bit.png', im)im2 = io.imread('test_16bit.png')请注意,读取的图像是翻转的,因此类似的操作
np.fliplr(np.flipud(im2))会将其恢复为原始形状。



