Python 如何使用多个通道调整tiff图像的大小?

Python 如何使用多个通道调整tiff图像的大小?,python,deep-learning,computer-vision,image-resizing,tiff,Python,Deep Learning,Computer Vision,Image Resizing,Tiff,我有一个大小为21 X 513 X 513的tiff图像,其中(513513)是包含21个通道的图像的高度和宽度。如何将此图像调整为21 X 500 X 375 我试着用枕头来做。但我不知道我是否做错了什么 >>> from PIL import Image >>> from tifffile import imread >>> img = Image.open('new.tif') >>> img <PIL

我有一个大小为21 X 513 X 513的tiff图像,其中(513513)是包含21个通道的图像的高度和宽度。如何将此图像调整为21 X 500 X 375

我试着用枕头来做。但我不知道我是否做错了什么

>>> from PIL import Image
>>> from tifffile import imread
>>> img = Image.open('new.tif')
>>> img

    <PIL.TiffImagePlugin.TiffImageFile image mode=F size=513x513 at 0x7FB0C8E5B940>

>>> resized_img = img.resize((500, 375), Image.ANTIALIAS)
>>> resized_img

    <PIL.Image.Image image mode=F size=500x375 at 0x7FB0C8E5B908>

>>> resized_img.save('temp.tif')

>>> img = imread('temp.tif')
>>> img.shape
  (500, 375)
来自PIL导入映像的
>>
>>>从文件导入imread
>>>img=Image.open('new.tif')
>>>img
>>>调整大小\u img=img.resize((500375),Image.ANTIALIAS)
>>>调整大小的\u img
>>>调整大小的图像保存('temp.tif')
>>>img=imread('temp.tif')
>>>形状
(500, 375)

频道信息在此丢失

您可以使用OpenCV调整图像大小。我可以使用以下代码调整TIFF格式图像的大小:

import cv2

file = "image.tiff"
img = cv2.imread(file)
print("original image size: ", img.shape)

new_img = cv2.resize(img,(img.shape[1]-100,img.shape[0]-100))  # cv2.resize(image,(width,height))
print("resized image size: ", new_img.shape)
输出:
原始图像大小:(512768,3)
调整图像大小:(412668,3)

Opencv采用内部线性作为默认插值方法

您可以通过提供附加参数来更改插值

new_img = cv2.resize(img,(img.shape[1]-100,img.shape[0]-100),interpolation=cv2.INTER_AREA)

在此处阅读有关可用插值方法的更多信息:

尝试使用
tiffile
scikit image

from tifffile import imread, imwrite
from skimage.transform import resize

data = imread('2009_003961_SEG.tif')
resized_data = resize(data, (375, 500, 21))
imwrite('multi-channel_resized.tif', resized_data, planarconfig='CONTIG')
链接到的文件
2009_003961_SEG.tif
不是多通道513x513x21图像。相反,该文件包含513个大小为513x21的图像。库将读取文件中的一系列图像,并将其作为513x513x21形状的numpy数组返回

要将numpy数组的大小调整为375x500x21,请使用(或
scipy.ndimage.zoom
)。单独调整21个通道的大小可能会更快


要使用
tiffile
写入包含大小为375x500x21的单个多通道图像的TIFF文件,请指定
planarconfig
参数。没有多少库或应用程序可以处理此类文件。

尝试使用opencv。但是它给了我这个错误:cv2.imread('new.tif')[WARN:0]OpenCV TIFF:TIFFRGBAImageOK:抱歉,无法处理32位样本的图像您能评论一下您的OpenCV代码吗?你还可以提供你的原始图像吗?我会试着在我这边运行它。图为:我的开放式简历代码只有两行。尝试读取文件时失败。我想,这是因为我的图像中的频道数量(即21个而不是3个)。>>>导入cv2>>>cv2.imread('2009_003961_SEG.tif')[WARN:0]OpenCV TIFF:TIFFRGBAImageOK:抱歉,无法处理具有32位样本的图像看起来可能是OpenCV版本的问题。低于3.4.5的版本会出现某种错误。请尝试升级并尝试。感谢您的澄清。我没有意识到这一点,“相反,该文件包含513x21大小的513个图像。”