Paddlehub人像抠图解读

需求

输入一张人像图片,对人像图片进行分割
输入图片(912x618x3):
在这里插入图片描述

代码如下

相关API参考:paddlehub官网

import os
import glob
import cv2
import paddlehub as hub

pic_dir = './pic/'
images_name = sorted(glob.glob(pic_dir+'*.png'))[:1]
module_root = './deeplabv3p_xception65_humanseg/'
module = hub.Module(name=None, directory=module_root)

# results是一个列表, 元素是字典
results = module.segmentation(data={'image': images_name },
                                batch_size=4,
                                visualization=True,
                                output_dir='./2pic_/')
print('module.segmentation方法有哪些参数:', module.segmentation.__code__.co_varnames)
print('预测结果results类型:', type(results))             # list
print('列表的每个元素results[0]类型:', type(results[0]))  # dict
print('results[0]有哪些字段:',  list(results[0].keys()))       # 'save_path'和'data'字段
print("results[0]['save_path']:", results[0]['save_path'])   # save_path'对应的值为module.segmentation的参数output_dir值
print(type(results[0]['data']))   # ndarray
print(results[0]['data'].shape)   # (618, 912, 4)  是一个png图片
cv2.imwrite('./1.png', results[0]['data'])
# output_dir和cv2.imwrite都是一样的图片

运行结果如下

在这里插入图片描述
分割后的图片:
在这里插入图片描述

分割出来的图片解析

解析代码

img1 = Image.open('./00000001.png')
print("img1 模式:", img1.mode)
print("img1 尺寸:", img1.size)
print("img1 通道数:", len(img1.split()))
r,g,b,a = img1.split()
image_rgb = Image.merge("RGB", (r,g,b))
image_rgb.save('image_rgb-1.png')
a.save('image_a-1.png')
print('img1 通道a有哪些值:', set(np.array(a).flatten().tolist()))

运行结果

终端截图
在这里插入图片描述
image_rgb-1.png

在这里插入图片描述

image_a-1.png
在这里插入图片描述

可以参考资料

https://blog.csdn.net/hawkman/article/details/103901398
https://aistudio.baidu.com/aistudio/projectdetail/445281?channelType=0&channel=0
https://blog.csdn.net/hhhhhh13579/article/details/105924669
https://aistudio.baidu.com/aistudio/projectdetail/444078

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值