小编典典

使用numpy在Python中使用TIFF(导入,导出)

python

我需要一个python方法来打开TIFF图像并将其导入到numpy数组中,以便我可以分析和修改像素数据,然后再次将它们另存为TIFF。(它们基本上是灰度的光强度图,代表每个像素的相应值)

我找不到有关TIFF的PIL方法的任何文档。我试图弄清楚,但仅收到“错误模式”或“不支持的文件类型”错误。

我需要在这里使用什么?


阅读 224

收藏
2021-01-20

共1个答案

小编典典

首先,我从此页面下载了名为的测试TIFF图像a_image.tif。然后我像这样用PIL打开:

>>> from PIL import Image
>>> im = Image.open('a_image.tif')
>>> im.show()

这显示了彩虹图像。要转换为numpy数组,方法很简单:

>>> import numpy
>>> imarray = numpy.array(im)

我们可以看到图像的大小和数组的形状匹配:

>>> imarray.shape
(44, 330)
>>> im.size
(330, 44)

并且数组包含uint8值:

>>> imarray
array([[  0,   1,   2, ..., 244, 245, 246],
       [  0,   1,   2, ..., 244, 245, 246],
       [  0,   1,   2, ..., 244, 245, 246],
       ..., 
       [  0,   1,   2, ..., 244, 245, 246],
       [  0,   1,   2, ..., 244, 245, 246],
       [  0,   1,   2, ..., 244, 245, 246]], dtype=uint8)

修改完数组后,可以将其重新转换为PIL映像,如下所示:

>>> Image.fromarray(imarray)
<Image.Image image mode=L size=330x44 at 0x2786518>
2021-01-20