百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术资源 > 正文

使用Python AI轻松编辑背景(python ai教程)

off999 2024-10-31 14:01 12 浏览 0 评论

你有一张自己很喜欢的照片,但你注意到周围图像的背景在照片上产生了抑制效果。你觉得如果背景不存在,或者通过在特定图像中保留你的照片并稍作修改,将会得到一张高质量的人像照片。

执行以下操作的许多方式之一包括支付相当高的费用购买软件或聘请专业人员完成项目。还可能有一些显著的免费资源,但它们的可靠性或效率在某些限制下可能令人质疑。

与解决这些问题的麻烦相比,设计自己的签名方法来处理此任务难道不是很酷吗?

借助Python,可以轻松完成以下项目。通过更好地理解计算机视觉和人工智能,可以显著提高从图像中去除背景的性能和质量。在本文中,我们的主要目标是去除不必要的背景并保留所需的图像。

对于计算机视觉项目的初学者,我强烈推荐阅读我之前的一篇文章,该文章是OpenCV计算机视觉库基础知识的详细指南。以下是方便访问的链接。

https://towardsdatascience.com/opencv-complete-beginners-guide-to-master-the-basics-of-computer-vision-with-code-4a1cd0c687f9


用几行Python代码去除背景:

在本文的这一部分,我们将专注于使用Python去除特定图像的背景。对于这个特定项目,版本要求高于Python 3.7且低于当前的Python 3.11。我们将使用的库在版本3.7或更低版本上无法正常运行。

根据我的测试,由于适当的scipy模块版本无法下载,rembg库在Python 3.7版本上无法工作。然而,在Python 3.9上,我在执行本文中的程序时完全没有问题,只需使用以下pip install命令。

pip install rembg

rembg库是通过深度神经网络开发的,主要使用u2net架构来处理去除背景的任务。有几种架构的修改和许多经过测试的方法可提供最佳结果。rembg库还提供了对GPU安装的访问,以实现更快的处理。有关更多信息和对该库的理解,我强烈建议查看以下链接的官方GitHub存储库。

现在,我们已经对用于背景去除项目的库有了简要了解,是时候导入此项目所需的两个基本库了。如前所述,rembg库是我们使此任务变得简单和直接的首选。更高级的开发人员可以为项目创建自己的神经网络。

我们将使用的另一个重要库是Pillow库,它是处理图像相关任务的最佳库之一。此库通常已在Python中默认安装。如果没有,可以使用简单的pip安装命令进行安装。以下是代码片段中提到的必要库。

# Importing the necessary libraries
from rembg import remove
from PIL import Image

一旦导入了所需的库,下一步是指定要去除背景的图像的输入路径。我们还将指定输出路径在工作目录中,标题为“Image.png”,以存储没有背景的透明图像。读者可以选择任何其他文件名和格式。

# Specifying the working paths
input_path = "Dog.jpg"
out_path = "Image.png"

对于最终的去除背景过程,我们将使用pillow库打开具有指定输入路径的输入图像。然后,我们将使用rembg库的remove功能从相应图像中消除整体背景,仅保留狗这个主要焦点实体的图像。

透明背景与狗的图像然后保存在工作目录中。执行以下操作的代码片段如下所示。

# Removing the background and saving the image
input = Image.open(input_path)
remove_bgnd = remove(input)
remove_bgnd.save(out_path)

成功编译上述程序后,将生成狗的以下透明图像。

一旦我们有了狗的透明图像,我们可以继续文章的下一部分,根据需要更改并应用新的背景。读者可以根据自己的选择选择任何理想的背景,只要图像的大小相同。让我们在下一节中进一步探讨这个主题!


更改背景:

一旦我们完成了去除背景的工作,更加好奇的开发人员可能会想知道如何处理先前获得的透明图像。对于这一步,我们将遵循类似且相对简单的过程。我们将透明狗图像与上面的背景相结合。请注意,可以为此任务使用任何选择的背景。我们将用于此任务的唯一库要求是pillow库,用于在透明图像和上面图像中进行操作。

# Import the pillow library
from PIL import Image

在下一步中,我们将打开用于此背景编辑项目所需的两个图像。我们将首先打开透明的狗图像,然后是将要放置的新背景图像。以下是打开以下图像的代码片段。

# Opening the desired images
img1 = Image.open("Image.png")
img2 = Image.open("New_Bgnd.jpg")

一旦打开了这两个图像,确保所有图像的大小相同是至关重要的。如果两个图片的大小不匹配,将背景粘贴到透明的狗图像上的操作将无法正常工作。因此,验证图像大小并在需要时适当调整大小是必要的步骤。

对于按步骤跟随此指南的观众,如果您已单击提供的图像并将它们下载到您的工作目录,则会注意到所有图像的大小都是880 x 557。如果图像的大小不匹配,请根据需要调整它们的大小。如下所示,可以验证图像大小。

# Verifying image sizes
print(img1.size)
print(img2.size)

最后,我们将使用Pillow库的paste命令将背景图像粘贴到透明图像上。第一个参数表示第一个图像(具有透明背景的狗),下一个属性是起始坐标,最后一个是关键参数,表示相应图像的掩码。

Alpha通道被用作掩码,允许用户将背景与透明狗图像合并。我们可以将新创建的图像保存在工作目录中。执行以下操作的代码如下所示。

# Effectively changing the background
img2.paste(img1, (0, 0), img1)
img2.show()
img2.save("New_Dog.png")

一旦我们完成了这个项目,我们应该能够生成以下图像。

通过这两步过程,我们成功地去除了以前的背景,提取了所需的实体,并将提取的透明背景的狗放入新的背景中。对于此指南的更高级变体,我建议尝试在单个项目中完成这两个任务。此指南可以过渡到视频和实时项目中进行背景更换,就像使用绿幕更换背景一样,根据用户的愿望进行操作。


结论:

拥有一张自己的精彩照片,却不喜欢背景或想要在不同的氛围或地区看到自己,有时可能会成为一个问题。手动编辑背景可能会很繁琐,使用昂贵的软件进行编辑也可能不切实际。其他免费的背景去除选项的结果可能也不会产生最佳效果。然而,借助AI和Python,可以在几行简单的代码内完成此项目。

在本文中,我们了解了如何使用Python AI和几行代码去除、编辑和替换当前背景,使用你的照片或具有重要意义的图像。我们利用了Pillow和rembg库,有效地从原始图像中去除了离群值背景。一旦过滤了背景,我们可以通过使用原始图像及其相应的蒙版添加新的所需背景。

要对项目进行额外的改进,我强烈建议将此项目从图像扩展到视频甚至实时操作。对于高级学习,建议尝试学习并构建深度神经网络,从头开始执行去除背景的任务。

相关推荐

Python 数据分析——利用Pandas进行分组统计

话说天下大势,分久必合,合久必分。数据分析也是如此,我们经常要对数据进行分组与聚合,以对不同组的数据进行深入解读。本章将介绍如何利用Pandas中的GroupBy操作函数来完成数据的分组、聚合以及统计...

python数据分析:介绍pandas库的数据类型Series和DataFrame

安装pandaspipinstallpandas-ihttps://mirrors.aliyun.com/pypi/simple/使用pandas直接导入即可importpandasas...

使用DataFrame计算两列的总和和最大值_[python]

【如果对您有用,请关注并转发,谢谢~~】最近在处理气象类相关数据的空间计算,在做综合性计算的时候,DataFrame针对每列的统计求和、最大值等较为方便,对某行的两列或多列数据进行求和与最大值等的简便...

8-Python内置函数

Python提供了丰富的内置函数,这些函数可以直接使用而无需导入任何模块。以下是一些常用的内置函数及其示例:1-print()1-1-说明输出指定的信息到控制台。1-2-例子2-len()2-1-说...

Python中函数式编程函数: reduce()函数

Python中的reduce()函数是一个强大的工具,它通过连续地将指定的函数应用于序列(如列表)来对序列(如列表)执行累积操作。它是functools模块的一部分,这意味着您需要在使用它之...

万万没想到,除了香农计划,Python3.11竟还有这么多性能提升

众所周知,Python3.11版本带来了较大的性能提升,但是,它具体在哪些方面上得到了优化呢?除了著名的“香农计划”外,它还包含哪些与性能相关的优化呢?本文将带你一探究竟!作者:BeshrKay...

最全python3.11版12类75个内置函数大全

获取全部内置函数:importbuiltins#导入模块yc=[]#异常属性nc=[]#不可调用fn=[]#内置函数defll(ty=builtins):...

软件测试笔试题

测试工程师岗位,3-5年,10-14k1.我司有一款产品,类似TeamViewer,向日葵,mstsc,QQ远程控制产品,一个PC客户端产品,请设想一下测试要点。并写出2.写出常用的SQL语句8条,l...

备战各大互联网巨头公司招聘会,最全Python面试大全,共300题

前言众所周知,越是顶尖的互联网公司在面试这一part的要求就越高,需要你有很好的技术功底、项目经验、一份漂亮的简历,当然还有避免不了的笔试过关。对于Python的工程师来说,全面掌握好有关Python...

经典 SQL 数据库笔试题及答案整理

马上又是金三银四啦,有蛮多小伙伴在跳槽找工作,但对于年限稍短的软件测试工程师,难免会需要进行笔试,而在笔试中,基本都会碰到一道关于数据库的大题,今天这篇文章呢,就收录了下最近学员反馈上来的一些数据库笔...

用Python开发日常小软件,让生活与工作更高效!附实例代码

引言:Python如何让生活更轻松?在数字化时代,编程早已不是程序员的专属技能。Python凭借其简洁易学的特点,成为普通人提升效率、解决日常问题的得力工具。无论是自动化重复任务、处理数据,还是开发个...

太牛了!102个Python实战项目被我扒到了!建议收藏!

挖到宝了!整整102个Python实战项目合集,从基础语法到高阶应用全覆盖,附完整源码+数据集,手把手带你从代码小白变身实战大神!这波羊毛不薅真的亏到哭!超全项目库,学练一站式搞定这份资...

Python中的并发编程

1.Python对并发编程的支持多线程:threading,利用CPU和IO可以同时执行的原理,让CPU不会干巴巴等待IO完成。多进程:multiprocessing,利用多核CPU...

Python 也有内存泄漏?

1.背景前段时间接手了一个边缘视觉识别的项目,大功能已经开发的差不多了,主要是需要是优化一些性能问题。其中比较突出的内存泄漏的问题,而且不止一处,有些比较有代表性,可以总结一下。为了更好地可视化内存...

python爬虫之多线程threading、多进程、协程aiohttp批量下载图片

一、单线程常规下载常规单线程执行脚本爬取壁纸图片,只爬取一页的图片。importdatetimeimportreimportrequestsfrombs4importBeautifu...

取消回复欢迎 发表评论: