【问题标题】:Is it possible to load and display large(8296 x 14740 pix) images in python?是否可以在 python 中加载和显示大(8296 x 14740 pix)图像?
【发布时间】:2015-06-16 09:03:43
【问题描述】:

我需要我的 python 脚本以 tiff 格式加载和显示大 (35 MB - 8296 pix x 14740 pix) 图像。 我尝试过使用 openCV:

img = cv2.imread("filename.tif",-1)
cv2.namedWindow('map',cv2.WINDOW_NORMAL)
cv2.imshow('map',img)

我得到了:

OpenCV Error: Assertion failed (size.width>0 && size.height>0)
in cv::imshow, file ..\..\..\..\opencv\modules\highgui\src\window.cpp, line 261

cv2.error: ..\..\..\..\opencv\modules\highgui\src\window.cpp:261:
error: (-215) size.width>0 && size.height>0 in function cv::imshow

我也尝试过使用 matplotlib:

img = cv2.imread("filename.tif",-1)
pyplot.imshow(img)
pyplot.show()

我得到了:

TypeError: Image data can not convert to float

如何加载和显示这样的文件?

【问题讨论】:

  • 您能在某处上传此类图片的示例吗?
  • 文件添加到主帖

标签: python opencv matplotlib tiff


【解决方案1】:

Matplotlib 提供了一个方便的函数来加载图像:

import matplotlib.pyplot as plt

img = plt.imread('filename.tif')
plt.imshow(img)
plt.show()

【讨论】:

  • 并导致:图像大小(122283040像素)超过89478485像素的限制,可能是解压炸弹DOS攻击。减压炸弹警告。内存错误
  • 是的,我收到此警告。但代码仍然运行
  • 图像正在显示?在我这边,它以 MemoryError 结束,没有任何事情发生
  • 加载数据并显示它需要几秒钟。但是图像显示得很好
  • 做不到。像这样的图像有800张。 Meaby 如果我在显示之前尝试使用图像金字塔。
【解决方案2】:

我使用 PIL 打开它:

from PIL import Image
img = Image.open('filename.tiff')
img.show()

我收到DecompressionBombWarning,但它会在几秒钟后打开。

【讨论】:

    猜你喜欢
    • 2014-07-26
    • 2011-01-20
    • 2011-12-28
    • 1970-01-01
    • 1970-01-01
    • 2010-12-06
    • 1970-01-01
    • 1970-01-01
    • 2023-03-14
    相关资源
    最近更新 更多