0
点赞
收藏
分享

微信扫一扫

100个Python实战项目(十)从照片构建 GUI 应用程序铅笔素描

给大家安利一个免费且实用的 Python 刷题(面经大全)网站,👉​​点击跳转到网站​​

在本文中,我们将介绍如何将图像转换为水彩素描和铅笔素描 Linux。

素描和绘画被许多学科的艺术家用来保存思想、回忆和思想。从绘画和雕塑到参观艺术博物馆,体验艺术——提供多种幸福感,包括减轻压力和提高批判性思维能力。特别是绘画、素描和绘画,与提高创造力、记忆力和缓解压力有关,并被用于艺术治疗。

通过本文,我们现在可以构建一个 Web 应用程序,使用Python 框架Streamlit 直接将图像转换为草图。用户可以上传图像以将其转换为水彩素描或铅笔素描。用户可以进一步下载转换后的图像,在此之前让我们了解一些我们将在本文中使用的定义。

  • Streamlit– Streamlit 是 Python 开发人员中流行的开源 Web 应用程序框架。它可与各种常用库互操作并兼容,包括 Keras、Sklearn、Numpy 和 pandas。
  • PIL– PIL 代表 Python 成像库。它是 Python 编程语言中用于图像处理的包。它包括有助于图片编辑、创建和存储的轻量级图像处理工具。
  • Numpy– Numpy 是一个广泛使用的 Python 编程库,用于高级数学计算。
  • cv2- 该库用于解决计算机视觉问题

需要的 Package

pip install streamlit
pip install opencv-python
pip install numpy
pip install Pillow

逐步实施

第 1 步:安装 Streamlit

100个Python实战项目(十)从照片构建 GUI 应用程序铅笔素描_数据分析


同样,我们将安装 PIL、Numpy 和 cv2。

第 2 步:测试安装是否有效

streamlit hello

100个Python实战项目(十)从照片构建 GUI 应用程序铅笔素描_开发语言_02

第 3 步:现在运行 streamlit Web 应用程序

我们需要输入以下命令

streamlit run app.py

100个Python实战项目(十)从照片构建 GUI 应用程序铅笔素描_python_03

第 4 步:现在 Web 应用程序已成功启动

你可以通过本地 URL 或网络 URL 访问 Web 应用程序。

100个Python实战项目(十)从照片构建 GUI 应用程序铅笔素描_应用程序_04

第 5 步:创建一个文件夹

创建一个名为 - Web 应用程序的新文件夹,以将图像转换为草图。

第 6 步:将 Web 应用程序的代码粘贴到文件“ app.py ”中

最初在代码中,我们导入了我们将用于构建 Web 应用程序的所有必需的框架、包、库和模块。此外,我们必须使用用户定义的函数来将图像转换为水彩素描并将图像转换为铅笔素描。还有一个使用 PIL 库加载图像的功能。主函数包含 Web 应用程序的代码。最初,我们有一些标题和副标题来引导用户上传图片。为了上传图片,我们使用了streamlit 的文件上传器. 我们还提供了一个下拉菜单供用户在制作水彩素描/制作铅笔素描之间进行选择,然后根据他们的选择,我们呈现结果。原始图像和应用过滤器后的图像都被并排渲染,以便用户可以比较两个图像以查看结果。最后,用户还可以将图像下载到他们的本地机器上。这是通过使用 streamlit 的下载按钮来完成的。

完整代码

# 导入框架、包和库
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

# 具有 Web 应用程序代码的主函数
def main():

# 基本 heading 和 titles
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()

输出:

100个Python实战项目(十)从照片构建 GUI 应用程序铅笔素描_应用程序_05


100个Python实战项目(十)从照片构建 GUI 应用程序铅笔素描_数据分析_06


100个Python实战项目(十)从照片构建 GUI 应用程序铅笔素描_开发语言_07


100个Python实战项目(十)从照片构建 GUI 应用程序铅笔素描_数据分析_08


100个Python实战项目(十)从照片构建 GUI 应用程序铅笔素描_应用程序_09


100个Python实战项目(十)从照片构建 GUI 应用程序铅笔素描_python_10

举报

相关推荐

0 条评论