欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

python-使用百度AI开放平台实现人像动漫化、黑白图片上色、图像风格转化

程序员文章站 2022-03-10 15:33:07
...

百度AI开放平台为我们提供了大量丰富的智能接口,协助我们将复杂的任务简单化,在此以图像处理技术接口为例,写了几个好玩有趣的图像处理程序,
图像风格转化、黑白图像上色、人像动漫化
分析了三个接口标准,除了URL传的最后一个值不一样,data里部分值不一样,其它的代码是一样的,所以我把上面三个处理能力合并在一起了,减少重复劳动。

import requests,base64

# 百度AI开放平台鉴权函数
def get_access_token():
    url='https://aip.baidubce.com/oauth/2.0/token'
    data={
        'grant_type':'client_credentials',  # 固定值
        'client_id':'pmuz5g********bcfhRp9', # 在开放平台注册后所建应用的API Key
        'client_secret':'m0jLfrfYu******46tx99u5'  # 所建应用的Secret Key
    }
    res=requests.post(url,data=data)
    res=res.json()
    access_token=res['access_token']
    return access_token

def image_process(img_before,img_after,how_to_deal):        
# 函数的三个参数,一个是转化前的文件名,一个是转化后的文件名,均在同一目录下,第三个是图像处理能力选择
    request_url='https://aip.baidubce.com/rest/2.0/image-process/v1/'+how_to_deal
    if how_to_deal=='style_trans':	# 判断如果是 图像风格化,需要额外添加一个风格配置
        others='pencil'     # 风格化参数,具体可设置范围参见下面注释
        '''
        cartoon:卡通画风格
        pencil:铅笔风格
        color_pencil:彩色铅笔画风格
        warm:彩色糖块油画风格
        wave:神奈川冲浪里油画风格
        lavender:薰衣草油画风格
        mononoke:奇异油画风格
        scream:呐喊油画风格
        gothic:哥特油画风格
        '''
    else:
        others=''
    
    file=open(img_before,'rb') # 二进制读取图片
    origin_img=base64.b64encode(file.read())    # 将图片进行base64编码
    headers={'Content-Type':'application/x-www-form-urlencoded'}
    data={
        'access_token':get_access_token(),
        'image':origin_img,
        'option':others
    }

    res=requests.post(request_url,data=data,headers=headers)
    res=res.json()

    if res:
        f = open(img_after,'wb')
        after_img=res['image']
        after_img=base64.b64decode(after_img)
        f.write(after_img)
        f.close()

if __name__=='__main__':
    img_before='black.jpg'  # 当前目录下的图片
    img_after=img_before.split('.')     # 将原文件名分成列表
    img_after=img_after[0]+'_1.'+img_after[1]   #新生成的文件名为原文件名上加 _1

    image_process(img_before,img_after,'colourize')  
    # 第三个参数: selfie_anime 为人像动漫化,colourize 图像上色,style_trans 为图像风格化
    print('done!')

这里为了方便将转化前的图片和转化后的图片做对比,转化后的图片在文件名上加了个_1,比如转化前是demo.jpg,转化后就是demo_1.jpg。

下面是处理前的原图,百度随便找的
python-使用百度AI开放平台实现人像动漫化、黑白图片上色、图像风格转化
这是上色之后的图片效果:
python-使用百度AI开放平台实现人像动漫化、黑白图片上色、图像风格转化
这是使用图像动漫化之后的效果
python-使用百度AI开放平台实现人像动漫化、黑白图片上色、图像风格转化
这是使用图像风格化处理的铅笔画效果。
python-使用百度AI开放平台实现人像动漫化、黑白图片上色、图像风格转化

是不是很惊艳!