我试图将图像传递给我的函数loadImage
def loadImage(image):
np_image = Image.open(image)
np_image = np.array(np_image).astype('float32') / 255
np_image = transform.resize(np_image, (224, 224, 3))
# np_image = np.expand_dims(np_image, axis=0)
return np_image当我试图传递从Streamlit图像读取的图像时,它会给出以下错误:
raise StreamlitAPIException(message)
streamlit.errors.StreamlitAPIException: `seek()` is not a valid Streamlit command.我的主要功能命令:
list = predictions(model=model, breed_list=breed_list, image=st.image(img))预测功能:
def predictions(model, breed_list, image):
probabilities = model.predict(helper.loadImage(image))
return probabilities加载图像
img_file = st.sidebar.file_uploader(label='Upload a file', type=['png', 'jpg'])
if img_file:
img = Image.open(img_file)发布于 2022-06-28 02:13:37
Image.open()需要一个文件名、pathlib.Path或IO类对象,但是您要将st.image(img)的输出传递给它,它将是一个对象(本质上是一个Streamlit元素)。由于st.image(img)的输出不是文件名(即字符串),也不是pathlib.Path对象,因此Image.open()假设它是一个类似IO的对象,因此它试图调用.seek()方法( DeltaGenerator对象不提供该方法,这就导致了错误)。
根据您的代码判断,我假设img表示要显示的某个图像的文件名。如果是这种情况,您可能需要更改代码,以便首先将图像加载到numpy数组中,然后在Streamlit中呈现加载的图像,然后根据它进行预测:
def loadImage(image):
np_image = Image.open(image)
np_image = np.array(np_image).astype('float32') / 255
np_image = transform.resize(np_image, (224, 224, 3))
# np_image = np.expand_dims(np_image, axis=0)
return np_image
def predictions(model, breed_list, image):
probabilities = model.predict(loadImage(image))
return probabilities
loaded_img = loadImage(img)
st.image(img)
list = predictions(model=model, breed_list=breed_list, image=loaded_img)此外,顺便提一下:为了减少混乱,我强烈建议在list = predictions(...)中将list = predictions(...)重命名为与Python内置的list不冲突的东西--可能是predicted。
https://stackoverflow.com/questions/72767693
复制相似问题