cssprad1's picture
added text and image
76005a3
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()