I think you can just take the img_to_array function from the keras github source code (since it’s not in the anvil list of packages) and copy the function (assuming this is the package you meant)
def img_to_array(img, data_format='channels_last', dtype='float32'):
"""Converts a PIL Image instance to a Numpy array.
# Arguments
img: PIL Image instance.
data_format: Image data format,
either "channels_first" or "channels_last".
dtype: Dtype to use for the returned array.
# Returns
A 3D Numpy array.
# Raises
ValueError: if invalid `img` or `data_format` is passed.
"""
if data_format not in {'channels_first', 'channels_last'}:
raise ValueError('Unknown data_format: %s' % data_format)
# Numpy array x has format (height, width, channel)
# or (channel, height, width)
# but original PIL image has format (width, height, channel)
x = np.asarray(img, dtype=dtype)
if len(x.shape) == 3:
if data_format == 'channels_first':
x = x.transpose(2, 0, 1)
elif len(x.shape) == 2:
if data_format == 'channels_first':
x = x.reshape((1, x.shape[0], x.shape[1]))
else:
x = x.reshape((x.shape[0], x.shape[1], 1))
else:
raise ValueError('Unsupported image shape: %s' % (x.shape,))
return x
p.s. you can request to the anvil team to install the keras package into the server (if you’re on the paid plan) and they should get back to you quickly.
then you can import from keras modules on the server.
I think the solution above will just lead to the next error
models is not defined
If you’re not on the paid plan and/or it’s urgent - you can work with the package on your own computer using the anvil uplink feature
That first img variable loses scope outside the with block, doesn’t it?
Not sure it’s related to your issue (I don’t have any real experience with PIL) but that looks like it might not be doing what you think it does, as this line - img=img.resize(.....
is calling resize on an uninitialised variable, isn’t it?
This code is copied from the Jupyter notebook to Web app tutorial, but the undefined variables suggest that @dwarakavutla has only copied a little bit of the code from that example, which doesn’t work without the rest of the ML model.
@dwarakavutla, can you tell us a bit more about what you’re aiming to do here?
I believe you need to add it to first block of import modules–>
# before
from keras.preprocessing.image import ImageDataGenerator, load_img
# after
from keras.preprocessing.image import ImageDataGenerator, load_img, img_to_array