问题:

在做实验的时候,使用的数据集是tif格式的图片(png图片格式也可以是四通道),由于是四通道的图片在使用

plt.imshow(img)

时发现无法绘制出图片,因此试着输出图片的shape,才发现是四通道的图片。下面是使用的解决方法。

解决方法:

(1)使用cv2包

import cv2img_path = "./data/1.tif"save_path = './data/2.png'# 其实使用的方法非常简单,就是使用cv2.imread()读取四通道图片# 图片格式会自动转为三通道格式。img = cv2.imread(img_path)# 再通过cv2.imwrite()直接保存,图片就保存为三通道# 之后用其他方式再读取就是三通道格式cv2.imwrite(save_dir, img)

(2)使用PIL包

from PIL import Imageimport matplotlib.pyplot as pltimg_path = "./data/1.tif"save_path = './data/2.png'img = Image.open(img_path)img = img.convert("RGB") img.save(save_path)

第一次使用这个方法的时候使用的保存方式为plt.imsave(save_path, img)发现保存的图片和一开始的图片变的不一样,可能是因为img的格式是,使用plt.imsave()保存的格式不正确。如果img是numpy的格式使用plt.imsave()就没有出现错误。