随着人工智能的发展,想要把自己的照片变成动漫已经不是难题了,各种APP层出不穷,刷抖音应该经常看到一秒变身漫画少女的特效视频,这些都要归于人工智能。
随着国庆的到来,你的假期靓照可以动漫式的秀一波了。
今天就来用Python搞定它,不会Python的也没有关系,后台回复【专属动漫头像】即可获取源码,运行即可,运行也不会,关注公众号,点击【动漫头像】,可以一键生成漫画头像,只要上传真人照片,就能一秒变漫画版靓女帅哥。
Python是一门不用重新“造轮子”的语言,因为有好多的库文件已经帮我们实现了。比如今天要用到的requests和base64。
requests库是一个简洁且简单的处理HTTP请求的第三方库,简单来说就是来处理http请求的库,是爬虫必备神库;
Base64是一种基于64个可打印字符来表示二进制数据的表示方法,就是将不可见字符转换为可见字符的编码方式。(请无视我:由于2^6=64,所以每6个比特为一个单元,对应某个可打印字符。3个字节有24个比特,对应于4个Base64单元,即3个字节可由4个可打印字符来表示。在Base64中的可打印字符包括字母A-Z、a-z、数字0-9,这样共有62个字符,此外两个可打印符号在不同的系统中而不同。)Base64常用于在通常处理文本数据的场合,表示、传输、存储一些二进制数据,包括MIME的电子邮件及XML的一些复杂数据。
言归正传,直接实战。代码注释写得倍儿清晰,我就不说废话了。
# 导入所需要的库
import requests
import base64
接下来我们就要调用百度的API(每次调用都是收费的,不过不用帮我省着用)了,因为下面的这些代码不足以实现真正的人工智能,下次我们再来深刻的讨论用GAN生成式对抗网络(运用对抗生成网络技术,结合人脸检测、头发分割、人像分割等技术,为用户量身定制千人千面的二次元动漫形象,并支持通过参数设置,生成戴口罩的二次元动漫人像)生成动漫人脸。
def get_accesstoken():
"""
获取access_token
:return:
"""
# 请求URL
url = 'https://aip.baidubce.com/oauth/2.0/token'
# 请求Params
params = {
'grant_type': 'client_credentials',
'client_id': 'IuDNEQFrPbStzSSP1fVvWGAb',
'client_secret': 'PVEpf3VMAtuER88eIh2h3FUjPdYiyqWp'
}
# 获取请求结果
res = requests.post(url=url, data=params)
# print(res.status_code)
jsondata = res.json()
accesstoken = jsondata['access_token']
# 将获取的access_token返回
return accesstoken
get_accesstoken()
接下来,我们用代码读取照片,处理照片,并保存处理后的照片,实现你的专属动漫头像。
def get_img(img):
"""
获取处理的图像信息
:param img:
:return:
"""
# 请求URL
url = 'https://aip.baidubce.com/rest/2.0/image-process/v1/selfie_anime'
# 获取图像信息
origin_img = open(file=img, mode='rb')
# 将图片进行base64编码
img = base64.b64encode(origin_img.read())
# 关闭图像
origin_img.close()
# 请求header信息
headers = {
'Content-Type': 'application/x-www-form-urlencoded'
}
# 请求Params
params = {
'access_token': get_accesstoken(),
'image': img
}
# 获取请求结果
res = requests.post(url=url, data=params, headers=headers)
# 处理响应结果
if res:
# 打开一个文件
f = open(file='wql0.jpeg', mode='wb')
# 获取头像信息
avatar = res.json()['image']
jsondata = res.json()
# 对返回头像信息进行解码
avatar = base64.b64decode(avatar)
# 将头像信息写入文件
f.write(avatar)
# 关闭文件
f.close()
if __name__ == '__main__':
get_img(img='wqlraw.jpeg')
至此,我们就完美的实现了生成动漫二次元人像效果。一起实践起来吧,让你的十一获得千人千面的动漫人像。
十一还没到,这个奖我还帮你留着,别嫌少,试试运气吧!
抽奖环节
一等奖:大红包8个8.88
二等奖:手气红包60个
三等奖:理财电子书100本
持续关注,一边学习,一边把福利领到手!
这是我的公众号,坐标上海,专注于人工智能\机器学习\深度学习\计算机视觉\SLAM\Python学习\英语学习\思维培养\读书生活感想以及相关资源分享。欢迎关注,共同成长。