当前位置: 首页 > 科技观察

比PS好!Python20行代码批量抠图

时间:2023-03-17 14:31:05 科技观察

抠图前vsPython自动抠图在日常工作和生活中,我们经常会遇到需要抠图的场景,即使只有一张图片需要抠图,也会cutout这让我们很不耐烦,如果你遇到很多图片需要被裁剪,这时候你的表情应该会很有趣。Python可以是这样一个工具:当只有一张图片,需要仔细裁剪人物时,它可以帮助你减少裁剪图片的步骤;当有多张图片需要裁剪时,它可以直接帮你输出这些字符的基本轮廓,虽然不够详细,但也足够了。DeepLabv3+是谷歌DeepLab语义分割系列网络的最新作品。该模型可用于人像分割,支持任意尺寸的图像输入。如果我们自己实现这个模型,可能会很麻烦,好在百度的paddlehub已经帮我们实现了,我们只需要加载模型来分割图片即可。一、准备为了实现这个实验,Python是必不可少的。如果你还没有安装Python,可以关注文末的微信公众号获取下载安装指南。然后,我们需要安装百度的paddlepaddle。官网有详细的指引:https://www.paddlepaddle.org.cn/install/quick根据自己的情况选择这些选项。最后的CUDA版本,由于本次实验不需要训练数据,不需要过多的计算,所以直接选择CPU版本即可。选择完成后,下方会出现安装指南。不得不说,Paddlepaddle在这些方面还是挺贴心的(私聊bb:名字不好听)。注意,如果你的Python3环境变量中的程序名是Python,记得把语句改成Pythonxxx,安装如下:python-mpipinstallpaddlepaddle-ihttps://mirror.baidu.com/pypi/simple你还需要安装paddlehub:pipinstall-ihttps://mirror.baidu.com/pypi/simplepaddlehub2。整个写代码的过程分为三步:载入模型指定要抠图的图片目录抠图importosimportsysimportpaddlehubashub#1。加载模型humanseg=hub.Module(name="deeplabv3p_xception65_humanseg")#2。指定要抠图的图片目录path='./source/'files=[]dirs=os.listdir(path)fordiretionindirs:files.append(path+diretion)#3.抠图results=humanseg.segmentation(data={"image":files})forresultinresults:print(result['origin'])print(result['processed'])不多不少,一共20行代码.抠图完成后,本地文件夹下会生成一个名为humanseg_output的文件夹。这里存放的是裁剪成功的图片。3.结果分析不得不承认Google的算法很强大。只要背景好一点,提取出来的细节可以和人工提取的相媲美,甚至比人工提取的还要好。但是当背景和人的颜色相当时,会出现一些问题,比如下面的结果:后面的大叔完全被忽略了(找到大叔的内阴影区域)。不过,这个模型是迄今为止我见过的最强大的镂空模型,无一例外。