【问题标题】:How do I convert image path to image object I can use ImageChops on?如何将图像路径转换为可以使用 ImageChops 的图像对象?
【发布时间】:2013-01-22 16:05:01
【问题描述】:

我正在尝试使用 ImageChops 将目录中的所有 .tiff 文件一起添加,但我不断收到错误“IOError:无法识别图像文件”。我以为只是尝试使用文件路径而不是图像对象的问题,但是其他地方的类似代码没有这个问题。

def imadd():  #subcommand
    img1=Image.new('RGB',(2048, 2048))
    img1.save("summation.tif")
    for file in os.listdir(directoryname):
        if fnmatch.fnmatch(file, '*.tif'):
           im2 = Image.open("summation.tif", mode='r')
           im3 = Image.open(os.path.join(directoryname, file))
           finalimg = ImageChops.add(im2, im3, 1, 0)
           finalimg.save("summation.tif") 

经过反复试验,所有部件都可以正常工作,除了:

im3 = Image.open(os.path.join(目录名, 文件)).

我也尝试使用 glob.glob(),但仍然返回相同的错误。

【问题讨论】:

  • 可能是 PIL 不支持您拥有的某些特定 TIF 文件。您可以链接到导致错误的其中一个吗?
  • 它们是 8Mb、2048x2048 像素的 .TIFF 文件:link 我正在使用 python 重写一个过时的 X 射线衍射处理程序。
  • 该文件是一个 16 bpp 灰度 TIFF,使用 PIL 1.1.7 可以正常打开。你用的是同一个版本吗?
  • 有趣的是,在某个程序中,我可以在这张图片中看到白点,但在其他程序中,我有他们都说这是一个单一的平面黑色图像。

标签: python image-processing python-imaging-library


【解决方案1】:

虽然您可以使用 PIL 打开并显示 16 位 tiff,但 ImageChops 不起作用。 matplotlib 和 scipy 有更多可用的工具。

还有 im3 = Image.open(os.path.join(directoryname, file)) 需要是 Image.open(unicode(os.path.join(directoryname, file)))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-03-18
    • 1970-01-01
    • 2014-07-06
    • 1970-01-01
    • 2021-08-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多