首页 > 解决方案 > 为什么我得到'numpy.ndarray'对象没有属性'convert'?

问题描述

我目前正在做一个机器学习项目,出于某种原因我自己实现了数据增强。

图像类型是

'PIL.JpegImagePlugin.JpegImageFile'

我想将我的图像附加到名为图像的列表中。

#method "scale_augmentation" is self defined function. Return image.
f_processed = self.scale_augmentation(image = f) 

#error occurs here                
self.images.append(Image.fromarray(f_processed.convert('RGB'), dtype=np.float32) / 255.)

我被这个错误困扰了很长时间,并且我经历了许多关于这个错误的堆栈溢出问题。提前致谢。


Scale_augmentation 函数看起来像这样

def scale_augmentation(image, scale_range=(256, 400), crop_size=224):
scale_size = np.random.randint(*scale_range)
image = imresize(image, (scale_size, scale_size))
image = random_crop(image, (crop_size, crop_size))
return image

错误也看起来像这样

--> 100 self.images.append(Image.fromarray(f_processed.convert('RGB'), dtype=np.float32) / 255.)
AttributeError: 'numpy.ndarray' object has no attribute 'convert'

标签: pythonnumpy

解决方案


首先将其转换为图像对象,Image.fromarray然后使用convert

尝试这个:

self.images.append((Image.fromarray(f_processed, dtype=np.float32).convert('RGB') / 255.)

明确的步骤是:

image = Image.fromarray(image)

image = image.convert("RGB")

现在图像是 jpeg 格式,你这样做:

image.save('test_test.jpeg')


推荐阅读