900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > Python自制动漫头像~快帮女神制作一个专属头像~

Python自制动漫头像~快帮女神制作一个专属头像~

时间:2020-04-08 16:46:23

相关推荐

Python自制动漫头像~快帮女神制作一个专属头像~

嗨嗨,大家下午好 ~

不知道你们喜不喜欢用动漫头像~

但是每次换完头像后总会跟其他人撞头像!

实在没办法,在其他地方存的,别人也能找到,所以干脆一点用Python自制!

做自己的专属头像~

领取源码或者更多其他资料点击这行即可

展示效果:

一键动漫化:

大家肯定想,“这有什么难的,抖音特效一键实现”。但是技术工种的我们怎么能屈服于此,当然要刨根问底,追求溯源。虽然作为技术小白还不能开发这样一个超赞👍的程序,但百度有,我们还是可以先学习一下的嘛。下面我们就开始吧!

一、原理分析

这里,推出百度AI开放平台关于人像动漫化特效的网址:http://suo.im/64FNvD 。

在这里我们可以上传自己的图片,进行人像动漫化的操作。

细心的小伙伴会发现上面的页面右侧有一个重要的东西:软件操作人像动漫化的接口。这是一个Post请求,发送该请求的网址并不全,需要你提供自己的access_token。同时呢,发送Post请求不仅需要携带Headers,还需要携带一个Params参数,其中Headers是固定的,image参数是图片的Base64编码格式。

这里,推出API文档网址(http://suo.im/64FNZ9),可以帮助我们怎么写代码。

从下图可以看到,API文档中不仅有人像动漫画的操作,还有黑白图像上色、图像风格转变、天空分割等一系列操作,都是很好玩的。

这样看来,技术方面实现动漫化需要两个步骤:

获取access_token参数

发送post请求

access_token参数的获取

获取access_token参数,需要使用百度的鉴权认证机制。下面就是鉴权认证机制的网址,在该网页上,详细介绍了我们怎么获取自己的access_token参数。

鉴权认证机制网址:http://suo.im/6rUoTr 。

​1/oauth/2.0/token?grant_type=client_credentials&client_id=【官网获取的AK】&client_secret=【官网获取的SK】

从中可以看到,为了发送Post请求,需要我们找到自己的API Key和Secret Key,下面我们继续👇

API Key和Secret Key的获取

首先,登陆百度智能云(https://login./),这个网址需要我们扫码登陆,我们按照提示进行登陆即可。

接下来,按照下图的顺序进入人脸识别:

依次点击公有云API→应用列表→创建应用:

注:可以看到,这里已经有我创建好的应用(如果是第一次创建,直接点击创建应用)。在这里便可找到我们想要的API Key和Secret Key。

下面展示如何创建应用,首先你需要起一个名字(这里都可以,只需要你可以记住),然后在图像增强与特效中选中人像动漫化,如下:

创建成功后,直接查看应用列表即可,最终页面如下。

点击API列表右边的展开后,可以发现小惊喜,有许多有意思的内容,你都可以琢磨琢磨,甚至我们可以查看某个API的使用次数,有效次数使用完了以后,你就需要付费使用啦。下图也可以看到人像动漫画操作大致也就500次的免费使用次数。

二、代码展示

源码.资料.素材.工具(软件.模块)安装教程👉【点击领取】

下面,进入正题!贴心的百度已经将部分代码为大家展示出来了,我们来继续学习:

​1import requests2import base6434# get_access_token()函数是为了获取access_token参数5def get_access_token():6 url = '/oauth/2.0/token'7 data = {8 'grant_type': 'client_credentials', # 固定值 9 # client_id 为官网获取的APIKey, client_secret 为官网获取的SecretKey10 'client_id': 'gIMB...PtqR0D11fz', # 在开放平台注册后所建应用的API Key,这里属于私密,不做展示11 'client_secret': '782...vGRKlmwS' # 所建应用的Secret Key,同上12 }13 res = requests.post(url, data=data)14 res = res.json()15 access_token = res['access_token']16 return access_token171819# 下面的代码就是百度API文档中展示的代码,直接搬过来使用即可20request_url = "/rest/2.0/image-process/v1/selfie_anime"21f = open('D:/yiyi.jpg', 'rb')# 二进制方式打开图片文件22img = base64.b64encode(f.read()) # 这里是将图像转为base64的格式,这是百度API文档中要求的2324# 单纯的人物动漫化,不戴口罩25params = {"image":img}2627#调用函数获取 access_token 28access_token = get_access_token()29request_url = request_url + "?access_token=" + get_access_token()30headers = {'content-type': 'application/x-www-form-urlencoded'}31response = requests.post(request_url, data=params, headers=headers)32res = response.json()3334# 将这个图像信息写入,得到最终的效果图。35if response:36 f = open("动漫图.jpg", 'wb')37 after_img = res['image']38 after_img = base64.b64decode(after_img)39 f.write(after_img)40 f.close()

细心的伙伴会发现,上面的代码进行动漫化时仅设置成普通动漫化,除此之外,在params参数设定这里,如果设置参数type为"anime_mask"和"mask_id",可以生成戴口罩的二次元动漫图。

代码片段展示如下:

​python学习交流Q群:770699889 ###1#人物图像戴口罩,将上面代码params设定这里修改为下面样式2params = {3 "image":img,4 "type":"anime_mask",5 "mask_id":"5" #id范围为1-86}

出图!下图依次展示了id为1-8的mask类型,实在是有趣!

好啦,今天的分享到这里就结束了 ~

对文章有问题的,或者有其他关于python的问题,可以在评论区留言或者私信我哦

觉得我分享的文章不错的话,可以关注一下我,或者给文章点赞(/≧▽≦)/

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。