百度AI开放平台为我们提供了大量丰富的智能接口,协助我们将复杂的任务简单化,在此以图像处理技术接口为例,写了几个好玩有趣的图像处理程序,
图像风格转化、黑白图像上色、人像动漫化
分析了三个接口标准,除了URL传的最后一个值不一样,data里部分值不一样,其它的代码是一样的,所以我把上面三个处理能力合并在一起了,减少重复劳动。
import requests,base64
# 百度AI开放平台鉴权函数
def get_access_token():
url='https://aip.baidubce.com/oauth/2.0/token'
data={
'grant_type':'client_credentials', # 固定值
'client_id':'pmuz5g********bcfhRp9', # 在开放平台注册后所建应用的API Key
'client_secret':'m0jLfrfYu******46tx99u5' # 所建应用的Secret Key
}
res=requests.post(url,data=data)
res=res.json()
access_token=res['access_token']
return access_token
def image_process(img_before,img_after,how_to_deal):
# 函数的三个参数,一个是转化前的文件名,一个是转化后的文件名,均在同一目录下,第三个是图像处理能力选择
request_url='https://aip.baidubce.com/rest/2.0/image-process/v1/'+how_to_deal
if how_to_deal=='style_trans': # 判断如果是 图像风格化,需要额外添加一个风格配置
others='pencil' # 风格化参数,具体可设置范围参见下面注释
'''
cartoon:卡通画风格
pencil:铅笔风格
color_pencil:彩色铅笔画风格
warm:彩色糖块油画风格
wave:神奈川冲浪里油画风格
lavender:薰衣草油画风格
mononoke:奇异油画风格
scream:呐喊油画风格
gothic:哥特油画风格
'''
else:
others=''
file=open(img_before,'rb') # 二进制读取图片
origin_img=base64.b64encode(file.read()) # 将图片进行base64编码
headers={'Content-Type':'application/x-www-form-urlencoded'}
data={
'access_token':get_access_token(),
'image':origin_img,
'option':others
}
res=requests.post(request_url,data=data,headers=headers)
res=res.json()
if res:
f = open(img_after,'wb')
after_img=res['image']
after_img=base64.b64decode(after_img)
f.write(after_img)
f.close()
if __name__=='__main__':
img_before='black.jpg' # 当前目录下的图片
img_after=img_before.split('.') # 将原文件名分成列表
img_after=img_after[0]+'_1.'+img_after[1] #新生成的文件名为原文件名上加 _1
image_process(img_before,img_after,'colourize')
# 第三个参数: selfie_anime 为人像动漫化,colourize 图像上色,style_trans 为图像风格化
print('done!')
这里为了方便将转化前的图片和转化后的图片做对比,转化后的图片在文件名上加了个_1,比如转化前是demo.jpg,转化后就是demo_1.jpg。
下面是处理前的原图,百度随便找的
这是上色之后的图片效果:
这是使用图像动漫化之后的效果
这是使用图像风格化处理的铅笔画效果。
是不是很惊艳!