【发布时间】:2019-02-05 00:10:24
【问题描述】:
我是 Python 新手,希望从电子显微镜 (.tif) 图像中提取尺度信息。
当我在记事本中打开文件并滚动到底部时,我看到一个标题“[Scan]”和它下面的一个项目“PixelWidth=3.10059e-010”。
我想在 Python 中读取此值并将其用作测量图像内物理距离的校准因子。
我发现了一种使用 PIL (https://stackoverflow.com/a/46910779/10244370) 的有前途的方法,但在运行推荐的代码时遇到了错误。
from PIL import Image
from PIL.TiffTags import TAGS
with Image.open(imagetoanalyze) as img:
meta_dict = {TAGS[key] : img.tag[key] for key in img.tag.iterkeys()}
我希望这会创建一个对象“meta_dict”,其中包含“PixelWidth”之类的字符串和“3.10059e-010”之类的浮点数。
相反,我看到了:
Traceback (most recent call last):
File "<ipython-input-62-4ea0187b2b49>", line 2, in <module>
meta_dict = {TAGS[key] : img.tag[key] for key in img.tag.iterkeys()}
File "<ipython-input-62-4ea0187b2b49>", line 2, in <dictcomp>
meta_dict = {TAGS[key] : img.tag[key] for key in img.tag.iterkeys()}
KeyError: 34682
显然我做错了什么。任何帮助将不胜感激。谢谢!
【问题讨论】:
-
您正在浏览图像中的所有标签,而
TAGS没有34682的条目。这并不意味着您仍然无法取出PixelWidth标签,因为丢失的标签可能与您无关。您可以使用TAGS.get(key)而不是TAGS[key]来避免在未找到的键上崩溃,并使用如下所示的循环来确定要打印的值。
标签: python metadata python-imaging-library tiff