boss有个需求,是希望将某demo公司的所有人员信息头像改为白底。
一开始是想网上找在线抠图处理,付了一季度的费用。到用时才发觉一季度每个月只能提供100张抠图。而我的demo要抠180多张,好气!
难道又要交一笔额外的费用,或者再等一个月?
稍微耐心地搜了下java有啥方案然后再是其它语言,python的5行代码抠图貌似不错,正好在犹豫着后端的第二语言抉择到底是python还是go。
趁此机会就用python练练手。
原始代码。我的python版本是3.8.6。
import os
import paddlehub as hub
humanseg = hub.Module(name='deeplabv3p_xception65_humanseg')
path = 'D:/img/'
files = os.listdir(path)
imgs = []
for i in files:
imgs.append(path + i)
results = humanseg.segmentation(data={'image': imgs})
首先是报缺少paddlehub模块的错误,网上搜了下 在cmd下执行
python -m pip install paddlepaddle -i https://mirror.baidu.com/pypi/simple
pip install -i https://mirror.baidu.com/pypi/simple paddlehub
其间我还记得还报了几个缺少module的错误 ,反正就是缺少哪个,百度下再pip install安装就是了(我的python自从安装后就一直放着吃灰缺的模块比较多)
所有的依赖module都安装完后,在cmd执行下这个的安装
hub install deeplabv3p_xception65_humanseg==1.0.0
就可以在cmd执行python 你的代码.py执行抠图操作。
这其间有个印象相对深的错误【JSONDecodeError】,根据这位同学的操作可以 处理
python安装paddlehub时出现JSONDecodeError的解决方法_qq_17219645的博客-CSDN博客_安装paddlehub出现的问题
最后一个问题是
AssertionError: In PaddlePaddle 2.x, we turn on dynamic graph mode by default, and 'load_inference_model()' is only supported in static graph mode. So if you want to use this api, please call 'paddle.enable_static()' before this api to enter static graph mode.
通过增加两行代码解决,最终的代码如下图:
至此,我的抠图能正式跑起来了。将我放在D盘img下的180多张图片都进行了抠图处理。
实际效果嘛,还是差强人意,不知道还有没有啥优化空间,姑且上些差强人意的例图给诸位看官看下