读取 Python 中的 tiff 标签

Read tiff tags in Python

我正在尝试读取 Python 中 tiff 文件的标签。该文件是 RGB,每个通道具有 uint16 值。我目前正在使用 tifffile:

import tifffile

img = tifffile.imread('file.tif')

然而,img是一个numpy数组,只有像素值。例如,我如何读取图像的 x_resolution

不确定 tifffile 库,但您可以通过 exifread:

获得 x resolution
import exifread

with open('image.tif', 'rb') as f:
    tags = exifread.process_file(f)
print(tags['Image XResolution'])

输出:

300

我找到了替代方案:

import tifffile
with tifffile.TiffFile('file.tif') as tif:
    tif_tags = {}
    for tag in tif.pages[0].tags.values():
        name, value = tag.name, tag.value
        tif_tags[name] = value
    image = tif.pages[0].asarray()

使用 skimage.external.tifffile 是另一种可能的方法:

from skimage.external import tifffile

with tifffile.TiffFile('your_file.tif') as tif:
    imgs = [page.asarray() for page in tif.pages]
    x_res = [page.tags['x_resolution'].value for page in tif.pages]

编辑tifffile 的副本已在 version 0.17.1 中删除,现在 tifffile 在 scikit-image 期间通过 pip 安装安装