gif人物自动抠图 抠背景
借助 百度云AI 人像分割接口
思路:把gif每一帧导出 分别抠图 然后合并回去
合并没写 直接用软件合并的 mac用picGIF lite
蔡徐坤的打篮球gif抠出的效果还行
gif导出每帧
#!/usr/bin/python
#-*- coding: utf8 -*-
from PIL import Image
import os
gifFileName = u'caixukunWEBO.gif'
#使用Image模块的open()方法打开gif动态图像时,默认是第一帧
im = Image.open(gifFileName)
pngDir = gifFileName[:-4]
#创建存放每帧图片的文件夹
os.mkdir(pngDir)
try:
while True:
#保存当前帧图片
current = im.tell()
im.save(pngDir+'/'+str(current)+'.png')
#获取下一帧图片
im.seek(current+1)
except EOFError:
pass
使用百度AI接口 批量抠图
# encoding:utf-8
import base64
import urllib
import urllib2,json
'''
人像分割
'''
#curl -i -k 'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=RNphOQTXbrYeW3jtQ3hqaRtx&client_secret=Dv2t1n5gAdeMHE0l3rG6LerhsR9lThUi'
request_url = "https://aip.baidubce.com/rest/2.0/image-classify/v1/body_seg"
for x in range(0,138):
print x
# 二进制方式打开图片文件
f = open(str(x)+'.png', 'rb')
img = base64.b64encode(f.read())
f.close()
params = {"image":img}
params = urllib.urlencode(params)
access_token = '<去百度创建应用 获取>'
#获取方法 curl -i -k 'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=xxxxx&client_secret=xxxxx'
request_url = request_url + "?access_token=" + access_token
request = urllib2.Request(url=request_url, data=params)
request.add_header('Content-Type', 'application/x-www-form-urlencoded')
response = urllib2.urlopen(request)
content = response.read()
if content:
imageStr = json.loads(content)["foreground"]
#print imageStr
f1 = open("tmp"+str(x)+".png","wb")
f1.write(base64.b64decode(imageStr))
f1.close()
评论