#Library imports import numpy as np import streamlit as st import cv2 from keras.models import load_model #Loading the Model model = load_model('soils.h5') #Name of Classes CLASS_NAMES = ['Acrisols', 'Fluvisols', 'Ferrasols'] #Setting Title of App st.title("Soils classification") st.markdown("Upload an image of the soil") #Uploading the soil image soil_image = st.file_uploader("Choose an image...", type="jpg") submit = st.button('Predict') #On predict button click if submit: if soil_image is not None: # Convert the file to an opencv image. file_bytes = np.asarray(bytearray(soil_image.read()), dtype=np.uint8) opencv_image = cv2.imdecode(file_bytes, 1) # Displaying the image st.image(opencv_image, channels="BGR") st.write(opencv_image.shape) #Resizing the image opencv_image = cv2.resize(opencv_image, (256,256)) #Convert image to 4 Dimension opencv_image.shape = (1,256,256,3) #Make Prediction Y_pred = model.predict(opencv_image) result = CLASS_NAMES[np.argmax(Y_pred)] st.title(str("This is {}".format(result)))