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

  • 个人网站:【 海拥】【小霸王游戏机】
  • 风趣幽默的前端学习课程:28个案例趣学前端
  • 想寻找共同学习交流、摸鱼划水的小伙伴,请点击【摸鱼学习交流群】
  • 免费且实用的计算机相关知识题库:进来逛逛

给大家安利一个免费且实用的 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 应用程序铅笔素描_第1张图片
同样,我们将安装 PIL、Numpy 和 cv2。

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

streamlit hello

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

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

我们需要输入以下命令

streamlit run app.py

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

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

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

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

第 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 应用程序铅笔素描_第5张图片
100个Python实战项目(十)从照片构建 GUI 应用程序铅笔素描_第6张图片
100个Python实战项目(十)从照片构建 GUI 应用程序铅笔素描_第7张图片
100个Python实战项目(十)从照片构建 GUI 应用程序铅笔素描_第8张图片
100个Python实战项目(十)从照片构建 GUI 应用程序铅笔素描_第9张图片
100个Python实战项目(十)从照片构建 GUI 应用程序铅笔素描_第10张图片

⭐️ 好书推荐

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

【内容简介】

本书介绍了数据分析的方法和步骤,并分别通过Excel和Python实施和对比。通过本书一方面可以拓宽对Excel功能的认识,另一方面可以学习和掌握Python的基础操作。
本书分为 11 章,涵盖的主要内容有Excel和Python在数据分析领域的定位与核心功能对比、统计量介绍、Excel与Python实践环境搭建、数据处理与分析的基本方法、ETL方法、数据建模理论、数据挖掘基础、数据可视化的基本方法、分析报告的制作方法。

京东自营购买链接: 《从零开始利用Excel与Python进行数据分析》- 京东图书

你可能感兴趣的:(100个Python实战项目,python,开发语言)