Spaces:
Sleeping
Sleeping
File size: 3,116 Bytes
d8a38ad a15455d d8a38ad a15455d d8a38ad 89bcbb9 b773117 fcdc6b9 b773117 89bcbb9 b773117 89bcbb9 b773117 a15455d b773117 a15455d d8a38ad e481a24 b773117 89bcbb9 6c7dde0 b773117 6c7dde0 89bcbb9 e481a24 d8a38ad e481a24 d8a38ad e481a24 a15455d e481a24 89bcbb9 a15455d b773117 a15455d |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 |
import streamlit as st
import cv2
import numpy as np
from PIL import Image
# Function to convert image to sketch
def image_to_sketch(image):
gray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
inverted_image = 255 - gray_image
blurred_image = cv2.GaussianBlur(inverted_image, (21, 21), 0)
inverted_blurred = 255 - blurred_image
sketch = cv2.divide(gray_image, inverted_blurred, scale=256.0)
return sketch
# Streamlit app layout
st.set_page_config(page_title="Image to Sketch Converter", page_icon="🎨", layout="centered")
# Custom CSS for heading color and footer positioning
st.markdown("""
<style>
.title {
color: blue;
font-size: 2.5em;
font-weight: bold;
text-align: center;
}
.footer {
position: relative;
bottom: 0;
width: 100%;
background-color: #f1f1f1;
text-align: center;
padding: 10px;
margin-top: 50px;
}
.content {
margin-bottom: 70px;
}
</style>
""", unsafe_allow_html=True)
# Title and description
st.markdown('<p class="title">🎨 Image to Sketch Converter</p>', unsafe_allow_html=True)
st.markdown("""
Convert your images into beautiful sketches with this simple app.
Upload an image, and get the sketch version instantly!
""")
# Example conversions and user input side by side
col1, col2 = st.columns(2)
# Replace 'Dog.jpg' with the path to an example image if running locally
example_image_path = 'Dog.jpg'
example_image = cv2.imread(example_image_path)
if example_image is not None:
# Convert BGR to RGB for correct color display
example_image_rgb = cv2.cvtColor(example_image, cv2.COLOR_BGR2RGB)
example_sketch = image_to_sketch(example_image)
with col1:
st.subheader("Example Conversions")
st.image(example_image_rgb, caption='Original Image', use_column_width=True)
st.image(example_sketch, caption='Sketch Image', use_column_width=True)
else:
st.error(f"Failed to load example image from path: {example_image_path}")
with col2:
st.subheader("Upload Your Image")
uploaded_file = st.file_uploader("Choose an image...", type=["jpg", "jpeg", "png"])
if uploaded_file is not None:
image = np.array(Image.open(uploaded_file))
st.image(image, caption='Uploaded Image', use_column_width=True)
st.write("")
st.write("Converting...")
sketch = image_to_sketch(image)
st.image(sketch, caption='Sketch', use_column_width=True)
# Provide a download link for the sketch image
im_pil = Image.fromarray(sketch)
im_pil.save("sketch.png")
with open("sketch.png", "rb") as file:
btn = st.download_button(
label="Download Sketch",
data=file,
file_name="sketch.png",
mime="image/png"
)
else:
st.info("Please upload an image to convert.")
# Footer
st.markdown("""
<div class="footer">
Made with ❤️ by MallelaPreethi
</div>
""", unsafe_allow_html=True)
|