如何用Python将npy的自拍卡通化(*^▽^*)

此功能的实现其实非常简单,主要是在Python中调用了百度AI开放平台的图像特效[人像动漫化]API,其实在各种编程环境下都可,之前也尝试过MATLAB中使用语音识别的API,效果同样稳定。
如何用Python将npy的自拍卡通化(*^▽^*)_第1张图片
实现步骤1:获取Access_Token
注册一个开发者账号后,登录进入控制台,找到图像增强与特效的应用并创建一个个人应用作为示例:
如何用Python将npy的自拍卡通化(*^▽^*)_第2张图片
之后按照官方给出的技术文档基本上就能完成80%了。

首先在py脚本中运行并获取Access_Token:

# 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())

其中【官网获取的AK】替换为"引号中复制进你的API Key",【官网获取的SK】替换为"引号中复制进你的Secret Key".
如何用Python将npy的自拍卡通化(*^▽^*)_第3张图片
返回参数:
如何用Python将npy的自拍卡通化(*^▽^*)_第4张图片
其中的access_token一行就是我们要的结果,复制引号中的内容。

步骤2:读取本地图片并请求接口响应

# encoding:utf-8
import requests
import base64
import os

request_url = "https://aip.baidubce.com/rest/2.0/image-process/v1/selfie_anime"
# 二进制方式打开图片文件
f = open('a4.jpg', 'rb')  
img = base64.b64encode(f.read())

params = {
     "image":img}
access_token = '24.2d63349d5951b2cd887327657f7246c1.2592000.1614345584.282335-23601878'
request_url = request_url + "?access_token=" + access_token
headers = {
     'content-type': 'application/x-www-form-urlencoded'}
response = requests.post(request_url, data=params, headers=headers)
if response:
    print (response.json())
如何用Python将npy的自拍卡通化(*^▽^*)_第5张图片

将access_token中的内容替换为上一步得到的,并将f = open(‘a4.jpg’, ‘rb’) 中的图片替换为自己的,图片位置与py脚本放在一个工程目录即可;

返回参数:
按照官方文档说明,将返回处理后图片的Base64编码(字典中image对应的内容),而非直接生成处理后的图片。

如何用Python将npy的自拍卡通化(*^▽^*)_第6张图片

步骤3:Base64编码转图片
实际图片生成的Base64编码将会很长,给你感受一下(* ̄︶ ̄)
如何用Python将npy的自拍卡通化(*^▽^*)_第7张图片
所以起初我想将其直接复制进某在线Base64编码转图片的网页上时,还会报错…
这里在程序最后加上一段译码功能,将其转换为处理后的图片:

img_str = response.json()['image']
img_data = base64.b64decode(img_str)
# 注意:如果是"data:image/jpg:base64,",那你保存的就要以png格式,如果是"data:image/png:base64,"那你保存的时候就以jpg格式。
with open('001.jpg', 'wb') as f:
      f.write(img_data)

运行完之后,就可以在当前工程目录下查看到你想要的图片啦~O(∩_∩)O
如何用Python将npy的自拍卡通化(*^▽^*)_第8张图片

你可能感兴趣的:(Python,python,API,百度AI开放平台,图片卡通化)