今天要做的内容是一个十分有趣的东西,那就是将人物头像动漫化。这篇文章上手简单,小白操作起来也不难,直接就可以操作,拿来就用。效果如下图所示。
百度API地址:https://ai.baidu.com/tech/imageprocess/selfie_anime
技术文档:https://ai.baidu.com/ai-doc/IMAGEPROCESS/Mk4i6olx5
这里面用到的是百度智能云的api,首先需要注册百度账号,然后登录百度的智能云。开通实现人像动漫化,创建应用。这里面的人物动漫化就是将人物图片处理成动漫图片。
这里面用到的百度的api,文档里面有详细的用法,可以自己查阅。
# encoding:utf-8
import requests
# client_id 为官网获取的AK, client_secret 为官网获取的SK
host = 'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=【官网获取的AK】&client_secret=【官网获取的SK】'
response = requests.get(host)
if response:
print(response.json())
首先建立起应用,然后查看自己的client_id=【官网获取的AK】&client_secret=【官网获取的SK】。把这两个东西填写上就行。然后response.json()中会带有所需要的access_token的。access_token是下面完整代码需要用到的。
import requests
import base64
host = 'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=xxx &client_secret=xxx2'
response = requests.get(host)
if response:
access_token= response.json()["access_token"]
request_url = "https://aip.baidubce.com/rest/2.0/image-process/v1/selfie_anime"
# 二进制方式打开需要处理图片文件
f = open('1.jpg', 'rb') # 打开需要处理的图片
img = base64.b64encode(f.read())
params = {"image":img}
request_url = request_url + "?access_token=" + access_token
response = requests.post(request_url, data=params)
print(response)
if response:
# 保存文件
f = open('2.jpg', 'wb')
img = (response.json()['image'])
f.write(base64.b64decode(img))
f.close()
上面取access_token的过程已经完成,然后就是通过下面的网址api进行图片处理。
request_url = "https://aip.baidubce.com/rest/2.0/image-process/v1/selfie_anime"
记得打开图片都是需要用到二进制的打开方式,b64decode
函数的主要作用是对经过base64
编码的bytes-like
对象或者ASCII
字符串进行解码。
然后整张图片的数据作为参数,传到到api中,api需要加上刚刚上面得到的那个access_token。
最后取得响应response,如果响应没问题的话,那就用json格式取得返回的二进制数值response.json()['image']
。把这个数值编码之后写入文件2.jpg
其实有相当多有趣的功能在百度智能云的api里面。有文字识别,有动物识别,有兴趣练手的同学其实也可以上去折腾一番api和源码案例基本上都是一看就懂。
欢迎和我讨论有关程序的问题,也可以答疑。关注公众号:诗一样的代码,交一个朋友。