Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Why do I get 'numpy.ndarray' object has no attribute 'convert'?

Tags:

python

numpy

I currently working on a machine learning project, and I implemented data augmentation by myself for some reason.

The type of image is

'PIL.JpegImagePlugin.JpegImageFile'

And I'd like to append my image to list called images.

#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.)

I'm stuck with this error for so long and I've gone through many stack overflow questions regarding to this error. Thanks in advance.


Scale_augmentation function looks like this

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

Also error looks like this

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

1 Answers

First convert it to image object by Image.fromarray then use convert

Try this:

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

Clear steps are:

image = Image.fromarray(image)

image = image.convert("RGB")

now image is in jpeg format and you do:

image.save('test_test.jpeg')

like image 170
murat yalçın Avatar answered Jul 29 '26 13:07

murat yalçın