使用Python将3D数组保存到2D图像堆栈中

时间:2019-03-18 19:45:35

标签: python arrays numpy save

我制作了一个3D数组,其中包含数字(0〜4)。我想要的是将3D数组保存为2D图像堆栈(如果可能,保存* .tiff文件)。我该怎么办?

import numpy as np

a = np.random.randint(0,5, size=(100,100,100))
a = a.astype('int8')

3 个答案:

答案 0 :(得分:0)

这应该有效。我还没有测试过,但是我已经使用这种方法将彩色图像分离为RGB切片,并且在这里它应该以几乎相同的方式工作,假设您不想首先对这些像素值做任何事情。 (它们将非常接近图像中的相同颜色)。

import imageio
import numpy as np

a = np.random.randint(0,5, size=(100,100,100))
a = a.astype('int8')
for i in range(100):
    newimage = a[:, :, i]
    imageio.imwrite("path/to/image%d.tiff" %i, newimage)

答案 1 :(得分:0)

“堆栈”到底是什么意思?当您将tiff称为输出格式时,我假设在这里您希望将数据作为多帧tiff放在一个文件中。
这可以通过imageio的{​​{1}}函数轻松完成:

mimwrite()

请注意,此功能依赖于将几个帧的计数器作为第一个参数,并将x和y设为跟随。另请参见其this example

但是,如果我错了,并且您希望拥有n个(例如100个)单独的tif文件,则还可以在循环中使用常规的# import numpy as np # a = np.random.randint(0,5, size=(100,100,100)) # a = a.astype('int8') import imageio imageio.mimwrite("image.tiff", a) 函数:

imwrite()

答案 2 :(得分:0)

实际上,我做到了。这是我的代码。 使用此代码,我不需要堆叠一系列2D图像(数组)。 制作一个3D阵列并保存。这就是我所做的。

buildTileFilter(){
    //Can I grab the route from the html element without having to create a url?
    let url = '{{route('report.file.list)}}';
    let query_string = url.search;
    let search_params = new URLSearchParams(query_string);
    search_params.set('f[]', this.locationId);
    url.search = search_params.toString();
    let new_url = url.toString();
    return new_url;
}