[英]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放在一個文件中。
這可以通過imageio
的mimwrite()
函數輕松完成:
# 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.