Caleb Spradlin
added text and image
76005a3
raw
history blame
3.77 kB
import streamlit as st
import numpy as np
import os
import pathlib
from inference import infer, InferenceModel
from text import intro
# -----------------------------------------------------------------------------
# class SatvisionDemoApp
#
# Directory Structure: base-directory/MOD09GA/year
# MOD09GQ/year
# MYD09GA/year
# MYD09GQ/year
#
# -----------------------------------------------------------------------------
class SatvisionDemoApp:
# -------------------------------------------------------------------------
# __init__
# -------------------------------------------------------------------------
def __init__(self):
self.thumbnail_dir = pathlib.Path('data/thumbnails')
self.image_dir = pathlib.Path('data/images')
print(self.thumbnail_dir)
self.thumbnail_files = sorted(list(self.thumbnail_dir.glob('sv-*.png')))
self.image_files = sorted(list(self.image_dir.glob('sv-*.npy')))
print(list(self.image_files))
self.thumbnail_names = [str(tn_path.name) for tn_path in self.thumbnail_files]
print(self.thumbnail_names)
self.inferenceModel = InferenceModel()
# -------------------------------------------------------------------------
# render_sidebar
# -------------------------------------------------------------------------
def render_sidebar(self):
st.sidebar.header("Select an Image")
for index, thumbnail in enumerate(self.thumbnail_names):
thumbnail_path = self.thumbnail_dir / thumbnail
# thumbnail_arr = np.load(thumbnail_path)
print(str(thumbnail_path))
st.sidebar.image(str(thumbnail_path), use_column_width=True, caption=thumbnail)
# -------------------------------------------------------------------------
# render_main_app
# -------------------------------------------------------------------------
def render_main_app(self):
st.title("Satvision-Base Demo")
st.header("Image Reconstruction Process")
selected_image_index = st.sidebar.selectbox(
"Select an Image",
self.thumbnail_names)
print(selected_image_index)
selected_image = self.load_selected_image(selected_image_index)
image, masked_input, output = self.inferenceModel.infer(selected_image)
col1, col2, col3 = st.columns(3, gap="large")
# Display the selected image with a title three times side-by-side
with col1:
st.image(image, use_column_width=True, caption="Input")
with col2:
st.image(masked_input, use_column_width=True, caption="Input Masked")
with col3:
st.image(output, use_column_width=True, caption="Reconstruction")
st.markdown(intro)
st.image('data/figures/reconstruction.png')
# -------------------------------------------------------------------------
# load_selected_image
# -------------------------------------------------------------------------
def load_selected_image(self, image_name):
# Load the selected image using NumPy (replace this with your image loading code)
image_name = image_name.replace('.png', '.npy')
image = np.load(self.image_dir / image_name)
image = np.moveaxis(image, 0, 2)
return image
# -----------------------------------------------------------------------------
# main
# -----------------------------------------------------------------------------
def main():
app = SatvisionDemoApp()
app.render_main_app()
app.render_sidebar()
if __name__ == "__main__":
main()