import
streamlit as st
from
PIL
import
Image
from
io
import
BytesIO
import
numpy as np
import
cv2
def
convertto_watercolorsketch(inp_img):
img_1
=
cv2.edgePreservingFilter(inp_img, flags
=
2
, sigma_s
=
50
, sigma_r
=
0.8
)
img_water_color
=
cv2.stylization(img_1, sigma_s
=
100
, sigma_r
=
0.5
)
return
(img_water_color)
def
pencilsketch(inp_img):
img_pencil_sketch, pencil_color_sketch
=
cv2.pencilSketch(
inp_img, sigma_s
=
50
, sigma_r
=
0.07
, shade_factor
=
0.0825
)
return
(img_pencil_sketch)
def
load_an_image(image):
img
=
Image.
open
(image)
return
img
def
main():
st.title(
'WEB APPLICATION TO CONVERT IMAGE TO SKETCH'
)
st.write("This
is
an application developed
for
converting\
your
*
*
*
image
*
*
*
to a
*
*
*
Water Color Sketch
*
*
*
OR
*
*
*
Pencil Sketch
*
*
*
")
st.subheader(
"Please Upload your image"
)
image_file
=
st.file_uploader(
"Upload Images"
,
type
=
[
"png"
,
"jpg"
,
"jpeg"
])
if
image_file
is
not
None
:
option
=
st.selectbox(
'How would you like to convert the image'
,
(
'Convert to water color sketch'
,
'Convert to pencil sketch'
))
if
option
=
=
'Convert to water color sketch'
:
image
=
Image.
open
(image_file)
final_sketch
=
convertto_watercolorsketch(np.array(image))
im_pil
=
Image.fromarray(final_sketch)
col1, col2
=
st.columns(
2
)
with col1:
st.header(
"Original Image"
)
st.image(load_an_image(image_file), width
=
250
)
with col2:
st.header(
"Water Color Sketch"
)
st.image(im_pil, width
=
250
)
buf
=
BytesIO()
img
=
im_pil
img.save(buf,
format
=
"JPEG"
)
byte_im
=
buf.getvalue()
st.download_button(
label
=
"Download image"
,
data
=
byte_im,
file_name
=
"watercolorsketch.png"
,
mime
=
"image/png"
)
if
option
=
=
'Convert to pencil sketch'
:
image
=
Image.
open
(image_file)
final_sketch
=
pencilsketch(np.array(image))
im_pil
=
Image.fromarray(final_sketch)
col1, col2
=
st.columns(
2
)
with col1:
st.header(
"Original Image"
)
st.image(load_an_image(image_file), width
=
250
)
with col2:
st.header(
"Pencil Sketch"
)
st.image(im_pil, width
=
250
)
buf
=
BytesIO()
img
=
im_pil
img.save(buf,
format
=
"JPEG"
)
byte_im
=
buf.getvalue()
st.download_button(
label
=
"Download image"
,
data
=
byte_im,
file_name
=
"watercolorsketch.png"
,
mime
=
"image/png"
)
if
__name__
=
=
'__main__'
:
main()