【问题标题】:python matplotlib.pyplot imreadpython matplotlib.pyplot imread
【发布时间】:2015-07-30 05:15:16
【问题描述】:

我正在使用 plt.imread 来阅读大的 .tiff 图像。 由于尺寸很大,我想只选择要加载的图像的一部分。 我想做类似的事情:

plt.imread(filename, [s1:s2, r1:r2])

为两个维度选择初始像素和最终像素。

有没有办法做到这一点?

非常感谢

【问题讨论】:

标签: python matplotlib imread


【解决方案1】:

我认为您必须阅读整个图像,然后您可以在对其进行任何处理之前对其进行切片:

import matplotlib.pyplot as plt
my_img = plt.imread('my_img.tiff')
my_clipped_img = my_img[s1:s2,r1:r2]

或者,在一行中:

import matplotlib.pyplot as plt
my_img = plt.imread('my_img.tiff')[s1:s2,r1:r2]

后者的好处是不创建完整大小的数组,而只是创建您想要的大小。

请记住,这里的 s1:s2 应该是垂直方向的限制,而 r1:r2 应该是水平方向的限制。

【讨论】:

    【解决方案2】:

    可以只读取文件的一部分的唯一方法是,如果文件采用列格式并且在磁盘上水平(行)和垂直(列)分区。 HiveHadoop 提供了这样的机制(Spark 支持它们)。但这些是针对更多数据存储的,而不是针对单个(图像)文件的。

    所以tmdavison 的答案是正确的 - 也许这可以更好地理解为什么会这样。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-10-17
      • 2019-01-06
      • 2018-04-12
      • 2015-09-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多