def predict_image(image): try: # Resize the image img = image.resize((128, 128)) # Convert the image to a NumPy array img = np.array(img) # Check if the image has 3 color channels if img.shape == (128, 128): # If grayscale, convert to RGB img = np.stack((img,) * 3, axis=-1) # Add a batch dimension img = np.expand_dims(img, axis=0) / 255.0 # Normalize the image # Make the prediction prediction = model.predict(img) # Get the predicted class and confidence level predicted_class = np.argmax(prediction) confidence = np.max(prediction) * 100 # Convert to percentage # Return the results if predicted_class == 0: return f'No tumor detected. Confidence: {confidence:.2f}%' else: return f'Tumor detected. Confidence: {confidence:.2f}%' except Exception as e: return f'Error processing image: {str(e)}'