[评论有奖]python+百度api将人物头像动漫化

2,546 阅读2分钟

小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。

本文已参与「掘力星计划」,赢取创作大礼包,挑战创作激励金。

今天要做的内容是一个十分有趣的东西,那就是将人物头像动漫化。这篇文章上手简单,小白操作起来也不难,直接就可以操作,拿来就用。效果如下图所示。

22.png

11.png

百度API地址:ai.baidu.com/tech/imagep…

技术文档:ai.baidu.com/ai-doc/IMAG…

这里面用到的是百度智能云的api,首先需要注册百度账号,然后登录百度的智能云。开通实现人像动漫化,创建应用。这里面的人物动漫化就是将人物图片处理成动漫图片。

image.png

这里面用到的百度的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和源码案例基本上都是一看就懂。

欢迎和我讨论有关程序的问题,也可以答疑。关注公众号:诗一样的代码,交一个朋友。