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?
3 Réponses :
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'])
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()
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