python+tifffileのtiffファイル読みと書き方


背景
pythonを使って同じ解像度の画像を操作して、tiff形式のファイルにマージします。
opencvは主にシングルフレームのtiffファイルを読み出すため、複数フレームのファイルサポートがよくない。
二つの比較的有用なパケット:TiffCaptureとtifffileが検索で発見された。両方ともpipでインストールできます。
前者は主にtiffファイルの読み取りに用いられ、後者は書き込み可能である。最終的にtifffileを選択してtiff画像ファイルを合成します。
セットアップtifffile

pip install tifffile
原理とコード
私の写真は8 bitの階調図です。
読み取りのたびに、最初のアップグレード:

new_gray = gray_img[np.newaxis, ::]
そしてnp.appndを使って配列に追加します。アプリごとに一度は、tiffが一フレームの画像を追加するのに相当します。

tiff_list = np.append(tiff_list, new_gray, axis=0)
すべての操作が完了したら、ディスクに一括保存します。

tifffile.imsave( out_tiff_path, tiff_list )
以下は私の完全なコードです。

import cv2
import tifffile
import time
import numpy as np
import time
import os

img_path = '../word_all'
out_txt_path = '../out_word_all.box'
out_tiff_path = '../out_word_all.tif'

tiff_list = None


with open(out_txt_path, 'wb') as f:
  dir_list = os.listdir(img_path)
  cnt_num = 0
  
  for dir_name in dir_list:
    dir_path = os.path.join(img_path, dir_name)
    img_list = os.listdir(dir_path)
    pwd = os.getcwd()
    os.chdir(dir_path)
    
    for img in img_list:
      
      print('dir_path:{}'.format(dir_path))
      gray_img = cv2.imread(img, cv2.IMREAD_GRAYSCALE)
      new_gray = gray_img[np.newaxis, ::]
      print('gray_img shape:{}, new_gray shape:{}'.format(gray_img.shape, new_gray.shape))
      #global cnt_num
      if cnt_num == 0:
        print('cnt_num == 0')
        tiff_list = new_gray
      else:
        print('np.append')
        tiff_list = np.append(tiff_list, new_gray, axis=0)
        print('tiff_list shape:{}'.format(tiff_list.shape))
      
      content = '{} 2 2 60 60 {}
'.format(dir_name, cnt_num) print(content) f.write(content.encode('UTF-8')) cnt_num += 1 os.chdir(pwd) tifffile.imsave( out_tiff_path, tiff_list ) print('tiff_list shape:{}'.format(tiff_list.shape))
以上のpython+tifffileのtiffファイルの読み方は小编で皆さんに共有した内容です。参考にしていただければと思います。どうぞよろしくお愿いします。