簡體   English   中英

使用Python將3D數組保存到2D圖像堆棧中

[英]Save 3D array into a stack of 2D images in Python

我做了一個3D數組,它由數字(0〜4)組成。 我想要的是將3D數組保存為2D圖像堆棧(如果可能,保存* .tiff文件)。 我應該做些什么?

import numpy as np

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

這應該工作。 我還沒有測試過,但是我已經使用這種方法將彩色圖像分離為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)

您所說的“堆棧”到底是什么意思? 當您將tiff稱為輸出格式時,我在這里假設您希望將數據作為多幀tiff放在一個文件中。
這可以通過imageiomimwrite()函數輕松完成:

# 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)

請注意,此功能依賴於將幾個幀的計數器作為第一個參數,並將x和y設為跟隨。 另請參見其文檔

但是,如果我錯了,並且您想擁有n個(例如100個)單獨的tif文件,則還可以在循環中使用常規的imwrite()函數:

n = len(a)
for i in range(n):
    imageio.imwrite(f'image_{i:03}.tiff', a[i])

實際上,我做到了。 這是我的代碼。 使用此代碼,我不需要堆疊一系列2D圖像(數組)。 制作一個3D陣列並保存。 這就是我為此所做的。

import numpy as np
from skimage.external import tifffile as tif

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM