栏目分类:
子分类:
返回
文库吧用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
文库吧 > IT > 软件开发 > 后端开发 > Python

AI | 一秒生成专属动漫头像

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

AI | 一秒生成专属动漫头像

随着人工智能的发展,想要把自己的照片变成动漫已经不是难题了,各种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本

持续关注,一边学习,一边把福利领到手!

这是我的公众号,主打编程,人工智能,自动驾驶,各种语言学习。
【姓名】:牧晨
【坐标】:上海
【擅长】:AI & 计算机视觉SLAM & Python & C++

转载请注明:文章转载自 www.wk8.com.cn
本文地址:https://www.wk8.com.cn/it/280189.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 wk8.com.cn

ICP备案号:晋ICP备2021003244-6号