python浪漫代码_五行Python代码实现批量抠图

c282752c48fed26376828d77b2a8ccf3.png

你是否曾经想将某张照片中的人物抠出来,然后拼接到其他图片上去,从而可以即使你在天涯海角,我也可以到此一游?专业点的人使用 PhotoShop 的“魔棒”工具可以抠图,非专业人士可以使用各种美图 APP 来实现,但是他们毕竟处理能力有限,一次只能处理一张图片,而且比较复杂的图像可能耗时较久。今天我来向大家展示第三种途径——用 Python 一键批量抠图。

准备工作

既然要装逼,准备工作是少不了的。所谓“站在巨人的肩膀上,做事事半功倍”,我们这里的“巨人”就是 paddlepaddle 了,中文名称叫“飞桨”,那么这个 paddlepaddle 是什么呢?

它是“源于产业实践的开源深度学习平台,致力于让深度学习技术的创新与应用更简单”,直白点就是我帮你实现了深度学习底层框架,你只要有创意就可以在我平台上运用少量简单代码轻松实现。它的官网是 https://www.paddlepaddle.org.cn/ 。

它的安装也比较简单,官网首页就有安装指引,我们这里根据官网的安装指引,使用 pip 方式来安装 CPU 版本。

我们首先执行语句:

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

安装成功后,我们在 python 环境中测试一下是否安装成功(这个也是按照官网指引来做),我们切换到 python 环境,运行如下代码:

Python 3.7.0 (v3.7.0:1bf9cc5093, Jun 26 2018, 23:26:24) 
[Clang 6.0 (clang-600.0.57)] on darwin
Type "help", "copyright", "credits" or "license" for more information.>>> import paddle.fluid>>> paddle.fluid.install_check.run_check()
Running Verify Paddle Program ... 
Your Paddle works well on SINGLE GPU or CPU.
I0506 21:47:48.657404 2923565952 parallel_executor.cc:440] The Program will be executed on CPU using ParallelExecutor, 2 cards are used, so 2 programs are executed in parallel.
W0506 21:47:48.658407 2923565952 fuse_all_reduce_op_pass.cc:74] Find all_reduce operators: 2. To make the speed faster, some all_reduce ops are fused during training, after fusion, the number of all_reduce ops is 1.
I0506 21:47:48.658516 2923565952 build_strategy.cc:365] SeqOnlyAllReduceOps:0, num_trainers:1
I0506 21:47:48.659137 2923565952 parallel_executor.cc:307] Inplace strategy is enabled, when build_strategy.enable_inplace = True
I0506 21:47:48.659595 2923565952 parallel_executor.cc:375] Garbage collection strategy is enabled, when FLAGS_eager_delete_tensor_gb = 0
Your Paddle works well on MUTIPLE GPU or CPU.
Your Paddle is installed successfully! Let's start deep Learning with Paddle now
>>> 

看到 Your Paddle is installed successfully 就表示安装成功了。

我们接下来需要使用的是这个平台的 paddlehub 工具,所以我们还需要安装 paddlehub :

pip install -i https://mirror.baidu.com/pypi/simple paddlehub

安装完成后,我们就可以开始运用了。

代码实现

我们的实现步骤很简单:导入模块 -> 加载模型 -> 获取图片文件 -> 调用模块抠图。

下面我们看代码实现:

import os, paddlehub as hub
huseg = hub.Module(name='deeplabv3p_xception65_humanseg') # 加载模型
path = './imgs/' # 文件目录
files = [path + i for i in os.listdir(path)] # 获取文件列表
results = huseg.segmentation(data={'image': files}) # 抠图

我将图片放在代码文件夹的同级目录 imgs 文件夹下,运行代码后,输出的抠图图片会自动放在代码同级目录的 humanseg_output 目录下,文件名称跟原图片的名称相同,但是文件格式是 png 。

我在 imgs 目录下放了5张图片,为了便于展示,我将他们放在一起截图:

34d0cd5c9270f733ae6a63cf70891e8d.png

原图片

运行程序后,在 humanseg_output 目录下生成了5张图片,同样的,我将他们放在一起截图:

aae3ed62244e9894b8945f8b3adf0640.png

抠图图片

我们可以看到程序将每张图片中的人物(可以是一个,也可以是多个)识别出来,并且抠出来成图,背景是白色。虽然有些细节处还有些许瑕疵,但是看起来还算不错。

总结

本文基于 paddlepaddle 平台,使用简单的五行代码实现了批量抠图,不仅解放了好多人的双手和双眼,而且为某些程序猿/程序媛的装逼工具箱提供了一件宝器。下次如果碰到某个女生或者闺蜜在为抠图发愁,别忘了掏出神器,赢得芳心哦!

作者 | 闲欢

来源:Python 技术「ID: pythonall」

推荐阅读:

潘石屹首次Python考试成绩 99 分,失分点:画完图后忘了隐藏画笔的箭头

使用Python下载文件之最佳实践

开源软件原来都这样命名的!Python最独特,Debian最浪漫,PHP简单粗暴......

75c42d754835fee4ffaaf988a7a54560.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/297786.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

一小时过c语言,一小时学会C语言.docx

PAGE \* MERGEFORMAT 14C语言程序设计第一课、认识C语言C语言的特点C语言是美国的Dennis Ritchie在1972年设计发明的。它由早期的编程语言BCPL(B语言)发展演变而来。C语言之所以发展迅速,成为最受欢迎的语言之一,主要因为它具有强大的功能。归纳起来&…

如何获得一个集合的所有子集合?

对于集合里面的任何一个元素,有两种可能,一种是在子集合里,另一种是不在子集合里。在子集合里的话用1表示,不在的话用0表示,那么一个集合的子集合都可以用二进制表示,假设集合为{1,2,3},那么可以…

日常使用Git,这些问题你遇到过吗?

GitHub 作为世界上最大的代码托管平台,几乎所有的开发者都有个 GitHub 的账号。因为无论对于开发者还是普通用户来讲,GitHub 上面都有不少优质开源项目可以借鉴和学习。其受欢迎程度还体现在,越来越多的人会主动优化自己的 GitHub 主页&#…

oracle基于时间恢复整个数据库

使用SQL*Plus执行闪回。 1.关闭数据库。SQL> shutdown abort;2启动数据库到挂载模式。SQL> startup mount;3.数据闪回。SQL> recover database until time 2011-11-20:07:00:00;(数据闪回的另一个可用命令:SQL> flashback database to timestamp to_tim…

delphi 关闭时缩小到托盘_delphi 实现最小化系统托盘

1、new -->application2、在form1中加入一个tPopMenu 命名为pm13、uses ShellAPI;4、定义一个常量在constWM_TRAYMSG WM_USER 101;5、在private中生命变量NotifyIcon: TNotifyIconData;6.声明两个消息procedure TfrmMain.WMSysCommand(var Msg: TMessage);beginif Msg.WPa…

Android API 中文(14) —— ViewStub

前言关键字: android.view.ViewStub,版本为Android 2.2 r1本章翻译来自唐明 ,这里本博负责整理和发布,欢迎其他译者一起参与Android API 的中文翻译行动,联系我over140gmail.com。 声明 欢迎转载,但请保留文…

stm32l0的停止模式怎么唤醒_「正点原子STM32Mini板资料连载」第十九章 待机唤醒实验...

1)实验平台:正点原子STM32mini开发板2)摘自《正点原子STM32 不完全手册(HAL 库版)》关注官方微信号公众号,获取更多资料:正点原子第十九章 待机唤醒实验本章我们将向大家介绍 STM32 的待机唤醒功能。在本章中,我们将使用 WK_UP 按…

Pgbouncer 介绍

Pgbouncer 介绍 PostgreSQL 的轻量的连接池。 特性 在轮转连接的时候有好几种方式:Session pooling/会话连接池最礼貌的方法。在客户端连接的时候,在它的连接生命期内,会给它赋予一个服务器连接。在客户端断开的时候,服务器连接会…

如何在不安装 Microsoft Office 的情况下生成 Excel 文件?

咨询区 mistrmark:我的一个项目中有导出 excel 的功能,但我发现运行代码的机器上一定要安装 Excel,否则就找不到 Microsoft.Office.Interop.Excel ,导致运行报错,请问如何解决?回答区 Mike Webb&#xff1a…

阿里全球数学竞赛落幕:全球最强73人出炉,北大获奖人数第一,还“炸出”各路世界大牛...

全世界只有3.14 % 的人关注了爆炸吧知识来源:量子位 ID:QbitAI作者:边策 金磊又是一场学霸的盛宴。阿里达摩院举办的第二届数学竞赛今天顺利结束,这场号召全民参与的数学竞赛,初赛的题目画风是这样的:是不…

c语言不通类型指针转换,C语言之强制类型转换与指针--#define DIR *((volatile unsigned int *) 0x0022)...

强制类型转换形式:(类型说明符) (表达式)举例说明:1) int a;a (int)1.9;2)char *b;int *p;p (int *) b; //将b的值强制转换为指向整型数据的指针类型,后赋给p注示:类型说明符和表达式都必须加括号,表达式为单个变量可…

MFC socket网络编程(流程示例)

MFC socket网络编程(流程示例) 1.TCP流式套接字的编程步骤 在使用之前须链接库函数:工程->设置->Link->输入ws2_32.lib,OK! 服务器端程序: 1、加载套接字库 2、创建套接字(socket)。 3、将套接字…

qfiledialog文件过滤_自定义高级QFileDialog文件过滤器

QFileDialog提供了一个函数---setproxyModel。。就是用这个来玩了。就是override filterAcceptsRow的虚函数,里面定制自己的过滤需求。返回bool 下面就是判断是否是目录,只显示目录文件夹。1 #ifndef PROXY_MODEL_H2 #define PROXY_MODEL_H34 #include…

【Azure + Core】实现CI/CD(一)构建镜像并推送仓库

(海上生明月,天涯共此时)今天是农历八月十六,大家中秋节快乐!放了三天假,和家人整理下屋子,打扫下卫生,闲着无聊就研究点儿新东西。最近一直再看DevOps相关的内容,自从开…

detectron2训练自己的数据集_keras版MaskRCNN来训练自己的目标检测数据集

向AI转型的程序员都关注了这个号👇👇👇机器学习AI算法工程 公众号:datayx一、运行环境的安装:1、下载好cuda9跟cudnn7,然后在安装好后,cuda其会自动添加到环境变量里,所以使用kera…

Win7系统中必需记住的14个常用快捷键

在使用电脑时,多多少少地都会用到一些快捷键,尤其是在玩游戏,或使用一些软件时。快捷键不仅方便,如果用的好,甚至可以大大提升我们的工作效率。而且,快捷键不仅可以在软件中使用,在Win7系统中其…

git 删除远程分支

2019独角兽企业重金招聘Python工程师标准>>> git branch -r -d origin/dev git push origin :dev 注意: git push origin 后面有个空格 转载于:https://my.oschina.net/u/1176097/blog/391573

float型y取值在1.0c语言表达式,2011年全国计算机二级C语言模拟试题及答案(14)...

一、选择题(1—14每题1分,15-18每题1.5分,共20分)1.可选作用户标识符的一组标识符是()AvoidBc5_b8CForD3aDefine_53-abDOWORDIFCaseint2.在C语言中,非法的八进制是:()A.018B.016C.017D.02573.在TC中,基本inta[4]类型变…

我看过《隐秘的角落》才知道,理科生有多可怕!

全世界只有3.14 % 的人关注了爆炸吧知识最近,大家都被《隐秘的角落》刷屏了吧?但吃瓜、看瓜的背后,我看到了理科生的可怕之处。数学课上,为了暗示朱朝阳自己杀人其实是因为被背叛,张东升利用笛卡尔在爱情里或美好与悲惨…

mysql sleep详解_sql注入详解(二)

sql注入详解4、检测方法首先是判断能不能进行sql注入是哪种sql注入(1)数字型?id1 and 11 返回成功?id1 and 12 返回失败这说明是数字型注入,或者叫整型注入此时后台是select * from where id x and 11select * from where id x and 12显然一个判断为真&#x…