Spaces:
Sleeping
Sleeping
| import altair as alt | |
| import pandas as pd | |
| import streamlit as st | |
| from PIL import Image | |
| import cv2 | |
| import numpy as np | |
| import io | |
| import zipfile | |
| st.title("Image Augmentation App") | |
| uploaded_image = st.file_uploader("Upload an Image", type=["jpg", "jpeg", "png"]) | |
| if uploaded_image: | |
| img = np.array(Image.open(uploaded_image)) | |
| st.image(img, caption="Uploaded Image", use_column_width=True) | |
| st.write("**Applying augmentations...**") | |
| transformations = { | |
| "Translated": cv2.warpAffine(img, np.float32([[1, 0, 50], [0, 1, 50]]), (img.shape[1], img.shape[0])), | |
| "Scaled": cv2.resize(img, None, fx=1.2, fy=1.2), | |
| "Rotated": cv2.warpAffine(img, cv2.getRotationMatrix2D((img.shape[1] // 2, img.shape[0] // 2), 45, 1), (img.shape[1], img.shape[0])), | |
| "Cropped": img[50:img.shape[0] - 50, 50:img.shape[1] - 50] | |
| } | |
| augmented_images = [] | |
| zip_buffer = io.BytesIO() | |
| with zipfile.ZipFile(zip_buffer, "w") as zipf: | |
| for i, (name, transformed_img) in enumerate(transformations.items()): | |
| img_pil = Image.fromarray(cv2.cvtColor(transformed_img, cv2.COLOR_BGR2RGB)) | |
| img_bytes = io.BytesIO() | |
| img_pil.save(img_bytes, format="JPEG") | |
| zipf.writestr(f"aug_{i + 1}_{name}.jpg", img_bytes.getvalue()) | |
| augmented_images.append(img_pil) | |
| st.write("**Augmentation completed!**") | |
| st.image(augmented_images, width=150) | |
| zip_buffer.seek(0) | |
| st.download_button("Download Augmented Images", data=zip_buffer, file_name="augmented_images.zip", mime="application/zip") | |