您当前的位置:首页 > IT编程 > python
| C语言 | Java | VB | VC | python | Android | TensorFlow | C++ | oracle | 学术与代码 | cnn卷积神经网络 | gnn | 图像修复 | Keras | 数据集 | Neo4j | 自然语言处理 | 深度学习 | 医学CAD | 医学影像 | 超参数 | pointnet | pytorch | 异常检测 | Transformers | 情感分类 | 知识图谱 |

自学教程:python实战之百度智能云使人像动漫化

51自学网 2021-10-30 22:43:57
  python
这篇教程python实战之百度智能云使人像动漫化写得很实用,希望能帮到您。

一、目标

之前无意中看到有某位博主写过人像动漫化这样的文章,看着还挺好玩,所以我也想尝试一下。

利用百度智能云中的人工智能,对图片进行处理达到人像动漫化的效果。

二、准备工作

1.百度云智能账号创建

2.图像特效应用

3.开发环境python3.7+pycharm

首先要注册一个百度智能云账号,并创建这个图像特效应用

在这里插入图片描述

三、操作流程

3.1 阅读官方文档

当我们要使用一个我们不太了解的东西时,阅读官方文档无疑是最重要的,官方文档一般都写的特别详细,对每一个功能描述的很细节,我们先来看一下

在这里插入图片描述
在这里插入图片描述

而且这里有案例,这里我使用的是python

3.2 开始实现鉴权

因为调用这么个接口api要进行鉴权,就是官方文档说得到access_token,如何鉴权呢?

在这里插入图片描述
在这里插入图片描述

import requestsimport pprintdef get_access_token(id,secret):    get_access_token_url='https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id='+id+'&client_secret='+secret    response=requests.get(get_access_token_url)    pprint.pprint(response.json())id='*******************'secret='******************'get_access_token(id,secret)

这里的id和secret就是创建应用的appkey和secretkey:

在这里插入图片描述

上述代码打印结果有很多,阅读官网文档得知,我们这里只需要得到access_token就OK了

在这里插入图片描述

修改上述代码以获取access_token

import requestsdef get_access_token(id,secret):    get_access_token_url='https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id='+id+'&client_secret='+secret    response=requests.get(get_access_token_url)    content=response.json()    access_token=content['access_token']    print(access_token)id='*******************'secret='******************'get_access_token(id,secret)

3.3 人像动漫化实现

正片开始

在这里插入图片描述

在这里插入图片描述

修改代码

import requestsimport pprintimport base64def get_access_token(id,secret):    get_access_token_url='https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id='+id+'&client_secret='+secret    response=requests.get(get_access_token_url)    content=response.json()    access_token=content['access_token']    return access_tokendef Animation(img_file,access_token):    request_url='https://aip.baidubce.com/rest/2.0/image-process/v1/selfie_anime'    f=open(img_file,'rb')    image=base64.b64encode(f.read())    params = {"image":image}    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)    pprint.pprint(response.json())def main():    img_file = '1.jpg'#图片地址    id = '**************************'    secret = '**************************'    access_token = get_access_token(id, secret)    Animation(img_file, access_token)if __name__ == '__main__':    main()

这时可以得到一系列的返回值

在这里插入图片描述

我们这里只要image

获取image值

修改代码

import requestsimport pprintimport base64def get_access_token(id,secret):    get_access_token_url='https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id='+id+'&client_secret='+secret    response=requests.get(get_access_token_url)    content=response.json()    access_token=content['access_token']    return access_tokendef Animation(img_file,access_token):    request_url='https://aip.baidubce.com/rest/2.0/image-process/v1/selfie_anime'    f=open(img_file,'rb')    image=base64.b64encode(f.read())    params = {"image":image}    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)    image_content=response.json()    image=image_content['image']    print(image)def main():    img_file = '1.jpg'#图片地址    id = '**************************'    secret = '**************************'    access_token = get_access_token(id, secret)    Animation(img_file, access_token)if __name__ == '__main__':    main()

获取到一串base64编码的图片,这显然快得到我们想要的东西了

 with open('result.jpg','wb') as f:        f.write(base64.b64decode(image))

保存到本地

看一下对比

在这里插入图片描述
在这里插入图片描述

呃呃呃,这。。。。还好吧,哈哈哈

四、完整代码如下

import requestsimport pprintimport base64def get_access_token(id,secret):    get_access_token_url='https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id='+id+'&client_secret='+secret    response=requests.get(get_access_token_url)    content=response.json()    access_token=content['access_token']    return access_tokendef Animation(img_file,access_token):    request_url='https://aip.baidubce.com/rest/2.0/image-process/v1/selfie_anime'    f=open(img_file,'rb')    image=base64.b64encode(f.read())    params = {"image":image}    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)    image_content=response.json()    image=image_content['image']    with open('result.jpg','wb') as f:        f.write(base64.b64decode(image))  def main():    img_file = '1.jpg'#图片地址    id = '**************************'    secret = '**************************'    access_token = get_access_token(id, secret)    Animation(img_file, access_token)if __name__ == '__main__':    main()

五、还能这么玩?

在这里插入图片描述

厉害了,还能加口罩,试一下

修改代码

params = {"image":image,"type":'anime_mask',"mask_id":1}#mask_id 1-8的整数,就用个1吧

看一下效果
在这里插入图片描述

啧啧啧

到此这篇关于python实战之百度智能云使人像动漫化的文章就介绍到这了,更多相关python人像动漫化内容请搜索51zixue.net以前的文章或继续浏览下面的相关文章希望大家以后多多支持51zixue.net!


python实战之德州扑克第三步-比较大小
Python获取秒级时间戳与毫秒级时间戳的示例代码
万事OK自学网:51自学网_软件自学网_CAD自学网自学excel、自学PS、自学CAD、自学C语言、自学css3实例,是一个通过网络自主学习工作技能的自学平台,网友喜欢的软件自学网站。