備忘メモ。
私はtifファイルを扱うのにカラー画像じゃなくグレースケールを扱うことが多い。
で、後でimageJというフリーソフトで画像を確認。
skimageというのを使うとpythonで楽に扱えることを知った。
私はちょくちょくmultipage tiffも扱うけど、
skimageのimreadやimsaveだとmultipageでもそうでなくても同じように扱える。
下のような感じでnumpyの配列を使う。
以下ソース。
私はtifファイルを扱うのにカラー画像じゃなくグレースケールを扱うことが多い。
で、後でimageJというフリーソフトで画像を確認。
skimageというのを使うとpythonで楽に扱えることを知った。
私はちょくちょくmultipage tiffも扱うけど、
skimageのimreadやimsaveだとmultipageでもそうでなくても同じように扱える。
下のような感じでnumpyの配列を使う。
以下ソース。
import numpy as np from skimage.external import tifffile as tff def main():# 画像の準備 sizex,sizey = 256,256 size = sizey,sizex x1 = np.linspace(-sizex/2,sizex/2-1,sizex) y1 = np.linspace(-sizey/2,sizey/2-1,sizey) xx,yy = np.meshgrid(x1,y1) image1 = np.zeros(size) image2 = np.zeros(size) image1 = np.sin(np.pi*2*xx/10) image2 = np.sin(np.pi*2*(xx-3)/10) # image1と image2を束ねてslicesというのにまとめる slices = np.zeros((2,sizey,sizex),dtype=np.float32) slices[0,:] = image1 slices[1,:] = image2 # 256x256のfloat画像 image1という画像とslicesというmultipage tiff画像を保存 tff.imsave('single.tif',np.float32(image1)) tff.imsave('multi.tif', np.float32(slices)) # 直前で保存した2つのtifファイルを読み込む i1 = tff.imread('single.tif') i2 = tff.imread('multi.tif') print('single.tifのshapeは{} multi.tifのshapeは{}'.format(i1.shape,i2.shape))if __name__=='__main__':main()