python实战之百度智能云使人像动漫化
作者:Linkage interrupt 发布时间:2021-01-19 07:15:11
标签:python,人像动漫化,百度智能云
一、目标
之前无意中看到有某位博主写过人像动漫化这样的文章,看着还挺好玩,所以我也想尝试一下。
利用百度智能云中的人工智能,对图片进行处理达到人像动漫化的效果。
二、准备工作
1.百度云智能账号创建
2.图像特效应用
3.开发环境python3.7+pycharm
首先要注册一个百度智能云账号,并创建这个图像特效应用
三、操作流程
3.1 阅读官方文档
当我们要使用一个我们不太了解的东西时,阅读官方文档无疑是最重要的,官方文档一般都写的特别详细,对每一个功能描述的很细节,我们先来看一下
而且这里有案例,这里我使用的是python
3.2 开始实现鉴权
因为调用这么个接口api要进行鉴权,就是官方文档说得到access_token,如何鉴权呢?
import requests
import pprint
def 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 requests
def 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 requests
import pprint
import base64
def 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_token
def 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 requests
import pprint
import base64
def 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_token
def 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 requests
import pprint
import base64
def 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_token
def 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吧
看一下效果
啧啧啧
来源:https://blog.csdn.net/qq_44862120/article/details/115869644
0
投稿
猜你喜欢
- 修复Access数据库,我们一般使用微软Office 97中带的Access 97对数据库进行修复和整理。Access数据库被损坏分以下几种
- python 的PIL安装是一件很头疼的的事, 如果你要在python 中使用图型程序那怕只是将个图片从二进制流中存盘(例如使用Scrapy
- 首先要介绍的是 Python Imaging Library,使用方法如下:from PIL import Imagefrom PIL.Ex
- 前言pyinstaller能够在Windows、Linux等操作系统下将Python脚本打包成可直接运行程序。使Python脚本
- 我就废话不多说啦,还是直接看代码吧!import osimport sysimport djangosys.path.append(r
- 1、将css与javascript全部用下边的方法分离到外部文件中去。<link rel="stylesheet"
- 废话不多说,我就直接上代码让大家看看吧!#!/usr/bin/env python# -*- coding: utf-8 -*-# @Fil
- 去空格及特殊符号s.strip().lstrip().rstrip(',')Python strip() 方法用于移除字符串
- 这是我研究网页切片算法的一个汇总想法。之前我写过:一种面向搜索引擎的网页分块、切片的原理,实现和演示,随着工作的深入,逐渐碰到以
- UPA2008于2008年10月24日在深圳举行,托哥、绿桔应邀主持了一场圆桌会和一场工作坊,以下是圆桌会议《商业价值与用户价值的平衡》的现
- 笔者日积月累了许多精彩、实用的Web特效的制作,这些特效几乎都是比较常用的网页特效。现在我就把这些经过
- asp vbs Cache缓存类属性valid,是否可用,取值前判断属性name,cache名,新建对象后赋值方法add(值,到期时间),设
- 前端时间写了一篇《利用CSS框架进行高效率的站点开发》,有不少朋友问我相关的问题。很早5key就在公司进行CSS框架的架构,也对不少朋友提出
- Hihi, 大家好~ 最近有不少人都提及了网页上该如何选择字体的问题。问题虽然小,但是却是前端开发中的基本,因为目前的网页,还是以文字信息
- 同志们,经过不懈的努力,查了各种文档,终于鼓捣出了一个稍微像样一点的node项目,当然如果直接拿去项目里用,这个demo还太简单,毕竟一个完
- 前言 1. 概述共享坐标轴就是几幅子图之间共享x轴或y轴,这一部分主要了解如何在利用matplotlib制图时共享坐标轴。pyplot.s
- 最近做的一个B/S项目,在打印时采用了在IE中嵌入.net winform控件和XML结合的方式(参见http://www.yesky.co
- 星期五写了个分类信息的小东东!在数据库里只有ip地址,一般访客不太清楚IP地址来源于哪个城市.如果在表里多一个列保存城市又没有真实性可言.如
- 影响 JavaScript性能的另外一个杀手就是递归,在上一节中提到采用memoization技术可以优化计算数值的递归函数,但memoiz
- 阅读上一章:Chapter 8 再谈清单Chapter 9 精简标签先前我们不断提到结构化内容能够把结构与设计细节分类并精简标签,该怎么做呢