脚本之家,脚本语言编程技术及教程分享平台!
分类导航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|shell|

服务器之家 - 脚本之家 - Python - Python用20行代码实现批量抠图功能

Python用20行代码实现批量抠图功能

2022-12-24 14:17Ckend Python

在日常的工作和生活中,我们经常会遇到需要抠图的场景,即便是只有一张图片需要抠,也会抠得我们不耐烦。本文将为大家分享一个20行代码就能实现是批量抠图,需要的可以参考一下

前言

Python用20行代码实现批量抠图功能

Python用20行代码实现批量抠图功能

抠图前 vs Python自动抠图后

在日常的工作和生活中,我们经常会遇到需要抠图的场景,即便是只有一张图片需要抠,也会抠得我们不耐烦,倘若遇到许多张图片需要抠,这时候你的表情应该会很有趣。

Python能够成为这样的一种工具:在只有一张图片,需要细致地抠出人物的情况下,能帮你减少抠图步骤;在有多张图片需要抠的情况下,能直接帮你输出这些人物的基本轮廓,虽然不够细致,但也够用了。

DeepLabv3+ 是谷歌 DeepLab语义分割系列网络的最新作 ,这个模型可以用于人像分割,支持任意大小的图片输入。如果我们自己来实现这个模型,那可能会非常麻烦,但是幸运的是,百度的paddle hub已经帮我们实现了,我们仅需要加载模型对图像进行分割即可。

 

1.准备

为了实现这个实验,Python是必不可少的,如果你还没有安装Python,建议阅读我们的这篇文章哦:超详细Python安装指南。

然后,我们需要安装百度的paddlepaddle, 进入他们的官方网站就有详细的指引

Python用20行代码实现批量抠图功能

根据你自己的情况选择这些选项,最后一个CUDA版本,由于本实验不需要训练数据,也不需要太大的计算量,所以直接选择CPU版本即可。选择完毕,下方会出现安装指引,不得不说,Paddlepaddle这些方面做的还是比较贴心的(就是名字起的不好)。

Python用20行代码实现批量抠图功能

要注意,如果你的Python3环境变量里的程序名称是Python,记得将python3 xxx 语句改为Python xxx 如下进行安装:

python -m pip install paddlepaddle -i https://mirror.baidu.com/pypi/simple

 

2.编写代码

整个步骤分为三步:

1.加载模型

2.指定待抠图的图片目录

3.抠图

import os
import sys
import paddlehub as hub

# 1.加载模型
humanseg = hub.Module(name="deeplabv3p_xception65_humanseg")

# 2.指定待抠图图片目录
path = './source/'
files = []
dirs = os.listdir(path)
for diretion in dirs:
  files.append(path + diretion)

# 3.抠图
results = humanseg.segmentation(data={"image": files})

for result in results:
  print(result['origin'])
  print(result['processed'])

不多不少一共20行代码。抠图完毕后会在本地文件夹下产生一个叫做humanseg_output的文件夹。这里面存放的是已经抠图成功的图片。

Python用20行代码实现批量抠图功能

Python用20行代码实现批量抠图功能

Python用20行代码实现批量抠图功能

Python用20行代码实现批量抠图功能

素材获取地址

 

3.结果分析

不得不承认,谷歌的算法就素厉害啊。只要背景好一点,抠出来的细节都和手动抠的细节不相上下,甚至优于人工手段。

不过在背景和人的颜色不相上下的情况下,会产生一些问题,比如下面这个结果:

Python用20行代码实现批量抠图功能

Python用20行代码实现批量抠图功能

背后那个大叔完全被忽略掉了(求大叔的内心阴影面积)。尽管如此,这个模型是我迄今为止见过的最强抠图模型,没有之一。

到此这篇关于Python用20行代码实现批量抠图功能的文章就介绍到这了,更多相关Python批量抠图内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文链接:https://mp.weixin.qq.com/s/WTxgKP1flw5duQpu0lDKUA

延伸 · 阅读

精彩推荐
  • Python利用PyCharm Profile分析异步爬虫效率详解

    利用PyCharm Profile分析异步爬虫效率详解

    这篇文章主要给大家介绍了关于如何利用PyCharm Profile分析异步爬虫效率的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用PyCharm具有一定...

    长江CJ7492021-06-24
  • Python安装dbus-python的简要教程

    安装dbus-python的简要教程

    这篇文章主要介绍了安装dbus-python的简要教程,dbus-python在Python编程中多用于处理进程之间的通信,需要的朋友可以参考下...

    脚本之家12222020-06-23
  • PythonPython3 能振兴 Python的原因分析

    Python3 能振兴 Python的原因分析

    我从Stephen A. Goss那读到关于了《Python 3正在毁灭Python》。这篇文章有不少精彩的论点,但我却并不认为Python 3是在毁灭Python,也不认为整个局面对Python一点也...

    脚本之家4922020-05-16
  • Python深入理解Python中命名空间的查找规则LEGB

    深入理解Python中命名空间的查找规则LEGB

    这篇文章主要介绍了深入理解Python中命名空间的查找规则LEGB,作者根据Python3.x版本进行讲解,需要的朋友可以参考下...

    Sunisdown5622020-07-29
  • Pythonubuntu 16.04下python版本切换的方法

    ubuntu 16.04下python版本切换的方法

    这篇文章主要为大家详细介绍了ubuntu 16.04下python版本切换的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    鹿人荚5932021-07-13
  • Python结合Python网络爬虫做一个今日新闻小程序

    结合Python网络爬虫做一个今日新闻小程序

    本篇文章介绍了我在开发过程中遇到的一个问题,以及解决该问题的过程及思路,通读本篇对大家的学习或工作具有一定的价值,需要的朋友可以参考下...

    Hann Yang9442022-01-17
  • Python浅析Python面向对象编程

    浅析Python面向对象编程

    这篇文章主要介绍了Python面向对象编程的相关资料,文中示例代码非常详细,帮助大家更好的理解和学习,感兴趣的朋友可以了解下 ...

    Alan.hsiang2772020-07-10
  • Pythonpython通过imaplib模块读取gmail里邮件的方法

    python通过imaplib模块读取gmail里邮件的方法

    这篇文章主要介绍了python通过imaplib模块读取gmail里邮件的方法,涉及Python操作imaplib模块操作邮件的相关技巧,需要的朋友可以参考下 ...

    work245982020-06-24