rasmodev's picture
Create app.py
7f55a39 verified
raw
history blame
1.45 kB
import streamlit as st
import numpy as np
import pandas as pd
from sklearn.datasets import fetch_openml
import matplotlib.pyplot as plt
import matplotlib as mpl
import scipy.ndimage.interpolation as ndi_int
# Streamlit App title
st.title("Image Shifting with MNIST Dataset")
# Load the MNIST dataset
st.write("Loading the MNIST dataset...")
mnist = fetch_openml('mnist_784', version=1)
# Separate the data and target variables
X, y = mnist["data"], mnist["target"].astype(int)
# Select a sample digit to display
st.sidebar.write("## Shift the Image")
digit_index = st.sidebar.slider("Select a digit index", 0, X.shape[0] - 1, 0)
digit = X.iloc[digit_index, :].values
digit_img = digit.reshape(28, 28)
# Display original digit image
st.write("### Original Image")
fig, ax = plt.subplots()
ax.imshow(digit_img, cmap=mpl.cm.binary)
ax.axis("off")
st.pyplot(fig)
# Function to shift the image
def shift_image(digit_img, x_shift, y_shift):
return ndi_int.shift(digit_img, [x_shift, y_shift])
# Input for shifting the image
x_shift = st.sidebar.slider("Shift in X (horizontal)", -10, 10, 0)
y_shift = st.sidebar.slider("Shift in Y (vertical)", -10, 10, 0)
# Shift the image based on user input
shifted_image = shift_image(digit_img, x_shift, y_shift)
# Display shifted image
st.write("### Shifted Image")
fig_shifted, ax_shifted = plt.subplots()
ax_shifted.imshow(shifted_image, cmap=mpl.cm.binary)
ax_shifted.axis("off")
st.pyplot(fig_shifted)