零基础学习python, 听了若干节入门免费课,即兴写了个程序,作为练习,实现抠图。
抠图的手工操作,是在PS软件中,将图片复制新建粘贴,主体保留,周围作为背景擦除,
被擦除区域,透明格式。成功后保存成 png 格式文件备用(png格式允许存储图层,保持透明区域)。手工操作费力费时,操作不当需要返回重新擦除,并且擦除精度随操作者熟练程度各异。擦除一个人物对象的周边,熟练者也需要几分钟。
python 语言,可以方便调用第三方功能包,实现抠图目的,主体对象周边比较平滑,程序执行仅需要几秒钟,大大节约了人力和时间。
准备:抠图需要第三方功能包 removebg,安装后才可以操作。安装功能包需要在Windows 的dos 窗口,win+r 热键调出运行对话框,输入 cmd 命令,打开 dos 窗口。dos窗口输入:
pip install removebg<回车> (等待下载安装结束) os包、time 包为系统自带,无需安装。RemoveBg函数调用,需要APIKEY 实参(可称密码),这是一个多位字符串。获取需要在 url = www.remove.bg 网站注册,获得免费APIKEY码。尴尬的是,每日仅允许处理50张图片。
程序构思:1)要求允许处理多张jpg格式图片,显示运行进度, 适当的用户交互, 转成exe发布。
2)关键代码,处理单张图片的代码仅两行:
rmbg = RemoveBg('apiKey码', '错误信息记录文件名') #56行
向网站发出获取API 调用对象的请求,返回对象
rmbg.remove_background_from_img_file('./picture/' + item) #74行
使用 rmbg 对象的方法,抠一张图。
3)检查图片存放位置(文件夹存在否, 不存在则创建文件夹并退出)
4)检查文件夹中有没有文件,没有则显示信息并退出, 有则重新建表剔除非jpg格式文件。
5)检查与处理抠图定义了多个函数,避免程序条理混乱,不易阅读
readkey() -- 读取APIkey 码文件;
founddir() -- 检查存放图片文件的文件夹是否存在,可发出提示信息;
Cutout() -- 抠图,含检查图片文件是否存在,以及剔除非jpg格式文件,并有提示;
6)主程序段,位于最后,明确提示操作准备,交互是否继续,或取消。
7) 打包成 exe 文件(略)
完整代码截图如下,每条语句均有功能注释。 1 引用有关处理包 2 定义一个函数,自附带文件读取 apikye 码值 3. 定义搜索目录的函数,返回真/假。 4 定义抠图处理的主函数 4 主程序 此代码分享,抛砖引玉,以期交流学习。 感谢:马士兵教育、博斌教育、六星教育等培训机构的python零基础入门免费授课。