| import streamlit as st |
| import cv2 |
| import numpy as np |
| from PIL import Image |
|
|
| st.title("🖼️ Image Quality Enhancer") |
|
|
| |
| uploaded_file = st.file_uploader("Upload an image", type=["jpg", "png", "jpeg"]) |
|
|
| def enhance_image(image): |
| |
| img = np.array(image) |
|
|
| |
| img = cv2.cvtColor(img, cv2.COLOR_RGB2BGR) |
|
|
| |
| denoised = cv2.fastNlMeansDenoisingColored(img, None, 10, 10, 7, 21) |
|
|
| |
| kernel = np.array([[0, -1, 0], |
| [-1, 5,-1], |
| [0, -1, 0]]) |
| sharpened = cv2.filter2D(denoised, -1, kernel) |
|
|
| |
| final = cv2.cvtColor(sharpened, cv2.COLOR_BGR2RGB) |
|
|
| return final |
|
|
| if uploaded_file is not None: |
| image = Image.open(uploaded_file) |
|
|
| st.subheader("Original Image") |
| st.image(image, use_column_width=True) |
|
|
| if st.button("Enhance Image"): |
| enhanced = enhance_image(image) |
|
|
| st.subheader("Enhanced Image") |
| st.image(enhanced, use_column_width=True) |
|
|
| |
| result = Image.fromarray(enhanced) |
| st.download_button( |
| label="Download Enhanced Image", |
| data=result.tobytes(), |
| file_name="enhanced.png", |
| mime="image/png" |
| ) |