2
votes

Lire les balises tiff en Python

J'essaye de lire les balises d'un fichier tiff en Python. Le fichier est RVB avec des valeurs uint16 par canal. J'utilise actuellement tifffile:

import tifffile

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

Cependant, img est un tableau numpy, qui n'a que des valeurs de pixels. Comment puis-je lire, par exemple, la x_resolution de l'image?


0 commentaires

3 Réponses :


3
votes

Pas sûr de tifffile lib mais vous pouvez obtenir la résolution x avec exifread:

300

Sortie :

import exifread

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


0 commentaires

5
votes

J'ai trouvé une alternative:

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


0 commentaires

0
votes

Utilisation de skimage.external.tifffile code> est une autre approche possible:

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]

Edit : la copie de tifffile a été supprimée dans version 0.17.1 , et tifffile est maintenant installé via pip lors de l'installation de scikit-image


0 commentaires