Python 头像动漫化,快来生成女朋友的动漫头像

栏目: IT技术 · 发布时间: 5年前

内容简介:作者 |

Python 头像动漫化,快来生成女朋友的动漫头像

Python 头像动漫化,快来生成女朋友的动漫头像

作者 |  ZackSock

来源 |  ZackSock

很多时候我们都会为头像发愁,像我这种万年不换头像的咸鱼从来没有这种烦恼。但是吧,有个个性化的头像还是非常有趣的,例如用自己的漫画来做头像,那么用 Python 如何实现呢?我打算把这个小技巧给大家分享。

Python 头像动漫化,快来生成女朋友的动漫头像

效果展示

在我多次测试后,发现女生头像的生成还是比较不错的,而且最好是正面照。而男生动漫头像的生成就有点差强人意了,大家可以自己试试,下面我们看看我用有村大妹子生成的两张图片,我们先看第一张:

Python 头像动漫化,快来生成女朋友的动漫头像

接下来是第二张,我用的是垫底辣妹中的形象:

Python 头像动漫化,快来生成女朋友的动漫头像

两张效果都还可以,主要还是人物的头部动漫化了,其它部分只是趋于动漫的风格。不过我觉得还是很可以的。

Python 头像动漫化,快来生成女朋友的动漫头像

实现

对于我这种基本功不扎实的人来说,实现这种只能调用API了。我使用的是百度的API,我们可以进入百度AI开放平台注册账号,具体流程就不讲了。登录后我们可以看到如下界面:

Python 头像动漫化,快来生成女朋友的动漫头像

我们依次点击开放能力》图像技术》人像动漫化,然后我们点击立即使用,再创建应用就可以了。在应用里面我们可以看到三个参数AppID、API Key和Secret Key三个参数,我们把这三个参数记住就可以开始我们的编程了。

实现人像动漫化需要用到两个接口,一个用来获取access_token,另一个则是用来获取动漫头像,我们来获取access_token:

import requests
def get_access_token():
    # 获取token的API
    url = 'https://aip.baidubce.com/oauth/2.0/token'
    # 获取access_token需要的参数
    params = {
        # 固定参数
        'grant_type':'client_credentials',
        # 必选参数,传入你的API Key
        'client_id':'你的API Key',
        # 必选参数,传入你的Secret Key
        'client_secret':'你的Secret Key'
    }
    # 发送请求,获取响应数据
    response = requests.post(url, params)
    # 将响应的数据转成字典类型,然后取出access_token
    access_token = eval(response.text)['access_token']
    # 将access_token返回
    return access_token

这里我们用到了requests模块,如果没有安装的可以在命令行执行下列语句:

pip install requests

接下来就是我们头像动漫化了:

import base64
import requests
def img2Cartoon(img):
    # 头像动漫化的API
    url = 'https://aip.baidubce.com/rest/2.0/image-process/v1/selfie_anime'
    # 以二进制的方式读取原始图片
    origin_im = open(img, 'rb')
    # 将图片进行base64编码
    img = base64.b64encode(origin_im .read())
    # 关闭原图片
    origin_im.close()

    # 请求的headers信息,固定写法
    headers = {'content-type':'application/x-www-form-urlencoded'}

    # 请求的参数
    params = {
        # 开始获取的access_token
        'access_token':get_access_token(),
        # 图片的base64编码
        'image':img,
    }
    # 发送请求
    response = requests.post(url, data=params, headers=headers)
    # 对响应结果进行处理
    if response:
        # 打开一个文件
        f = open('result.jpg', 'wb')
        # 获取动漫头像
        anime = response.json()['image']
        # 对返回的头像进行解码
        anime = base64.b64decode(anime)
        # 将头像写入文件当中
        f.write(anime)
        f.close()

我们只需要在main中调用img2Cartoon函数即可完成动漫头像的生成,完整代码如下:

import base64
import requests

def get_access_token():
    # 获取token的API
    url = 'https://aip.baidubce.com/oauth/2.0/token'
    # 获取access_token需要的参数
    params = {
        # 固定参数
        'grant_type':'client_credentials',
        # 必选参数,传入你的API Key
        'client_id':'你的API Key',
        # 必选参数,传入你的Secret Key
        'client_secret':'你的Secret Key'
    }
    # 发送请求,获取响应数据
    response = requests.post(url, params)
    # 将响应的数据转成字典类型,然后取出access_token
    access_token = eval(response.text)['access_token']
    # 将access_token返回
    return access_token

def img2Cartoon(img):
    # 头像动漫化的API
    url = 'https://aip.baidubce.com/rest/2.0/image-process/v1/selfie_anime'
    # 以二进制的方式读取原始图片
    origin_im = open(img, 'rb')
    # 将图片进行base64编码
    img = base64.b64encode(origin_im .read())
    # 关闭原图片
    origin_im.close()

    # 请求的headers信息,固定写法
    headers = {'content-type':'application/x-www-form-urlencoded'}

    # 请求的参数
    params = {
        # 开始获取的access_token
        'access_token':get_access_token(),
        # 图片的base64编码
        'image':img,
    }
    # 发送请求
    response = requests.post(url, data=params, headers=headers)
    # 对响应结果进行处理
    if response:
        # 打开一个文件
        f = open('result.jpg', 'wb')
        # 获取动漫头像
        anime = response.json()['image']
        # 对返回的头像进行解码
        anime = base64.b64decode(anime)
        # 将头像写入文件当中
        f.write(anime)
        f.close()

if __name__ == '__main__':
    img2Cartoon('origin.jpg')

这样我们就实现了头像动漫化的操作,非常简单,因为主要的工作都由百度的 程序员 帮我们实现了,大家可以使用自己的照片生成一些个性化的头像。如果太丑的话不要跑回来骂我就好了。

Python 头像动漫化,快来生成女朋友的动漫头像

Python 头像动漫化,快来生成女朋友的动漫头像

更多精彩推荐
☞你现在从事的程序员还有多久会消失?牛津大学研究员帮你算了算
☞Java 代码精简之道
☞顺丰正式杀入外卖领域;中国移动推出 5G 消息 App;GCC 10.1 发布 | 极客头条
☞一次对语音技术的彻底批判
☞后端程序员必备:书写高质量 SQL 的30条建议
☞到底是哪些人在玩链游?| 《区块链游戏玩家研究报告》
你点的每个“在看”,我都认真当成了喜欢

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Algorithms for Image Processing and Computer Vision

Algorithms for Image Processing and Computer Vision

Parker, J. R. / 2010-12 / 687.00元

A cookbook of algorithms for common image processing applications Thanks to advances in computer hardware and software, algorithms have been developed that support sophisticated image processing with......一起来看看 《Algorithms for Image Processing and Computer Vision》 这本书的介绍吧!

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码

SHA 加密
SHA 加密

SHA 加密工具

html转js在线工具
html转js在线工具

html转js在线工具