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

百度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开放平台实现人像动漫化、黑白图片上色、图像风格转化_第1张图片
这是上色之后的图片效果:
python-使用百度AI开放平台实现人像动漫化、黑白图片上色、图像风格转化_第2张图片
这是使用图像动漫化之后的效果
python-使用百度AI开放平台实现人像动漫化、黑白图片上色、图像风格转化_第3张图片
这是使用图像风格化处理的铅笔画效果。
python-使用百度AI开放平台实现人像动漫化、黑白图片上色、图像风格转化_第4张图片

是不是很惊艳!

你可能感兴趣的:(python)