人像抠图处理百度API接口调用

百度API接口

文档link:https://ai.baidu.com/ai-doc/BODY/Fk3cpyxua
用百度API接口训练出来的图片可以用于对比我们自己模型训练出来的图片

这个接口免费账户每天有500次的调用次数。
早起调用一下,我的训练集是1700张,测试集是300+张。
以下是demo部分,以测试一张为例:

首先在jupyter lab中pip install baidu-api的包

pip install baidu-api```
# encoding:utf-8
import cv2
import numpy as np
import base64
import requests
from aip import AipBodyAnalysis

读者自行去百度api官网注册,得到账号权限。

APP_ID = ''   # 在百度云中申请账号,免费账号每天有 500 次调用限制.
API_KEY = ''
SECRET_KEY = ''
client = AipBodyAnalysis(APP_ID, API_KEY, SECRET_KEY)

这里我使用了我很喜欢的一个up主的美照哈哈哈,我就不放出图片了。

# 以Do.jpg为例,利用百度API接口训练
imgfile = 'Do.jpg'   
ori_img = cv2.imread(imgfile)
height, width, _ = ori_img.shape 
with open(imgfile, 'rb') as fp:
    img_info = fp.read()

seg_res = client.bodySeg(img_info)    # 调用API,获得返回结果seg_res 
# 解析返回结果,并保存(mask以及替换背景后的图)
labelmap = base64.b64decode(seg_res['labelmap'])
nparr = np.fromstring(labelmap, np.uint8)
labelimg = cv2.imdecode(nparr,1)
labelimg = cv2.resize(labelimg,(width,height), interpolation=cv2.INTER_NEAREST)
new_img = np.where(labelimg==1, 255, labelimg)

maskfile = imgfile.replace('Do.jpg', 
                           '_mask.png')
cv2.imwrite(maskfile,ori_img)
cv2.imwrite(maskfile, new_img) 
res_imgfile = imgfile.replace('.jpg', '_res.jpg')
result = cv2.bitwise_and(ori_img, new_img)
cv2.imwrite(res_imgfile, result)

你可能感兴趣的:(图像处理,百度,接口,tensorflow)