我正在尝试打开尺寸为(520,696)的图像,但是当我使用此
时array = np.array([np.array(Image.open(folder_path+folders+'/'+'images'+'/'+image))], np.int32).shape`
我的形状为
(1, 520, 696, 4)
问题在于这个形状我无法使用toimage(array)
将其转换为图像;我得到了
对于任何模式,'arr'都没有合适的数组形状。
有关如何仅使用(520,696)读取该图像的任何建议?
答案 0 :(得分:3)
问题是额外的愚蠢维度。您可以使用以下方法删除它:
arr = np.squeeze(arr)
答案 1 :(得分:1)
您应该将图片作为单个图片加载,而不是将其作为堆栈加载,然后删除不相关的堆栈维度。基本程序可能是这样的:
from PIL import Image
pic = Image.open("test.jpg")
pic.show() #yup, that's the picture
arr = np.array(pic) #convert it to a numpy array
print(arr.shape, arr.dtype) #dimension and data type
arr //= 2 #now manipulate this array
new_pic = Image.fromarray(arr) #and keep it for later
new_pic.save("newpic.bmp") #maybe in a different format