python调用百度人像动漫化

一、代码

import base64
import requests

class AnimeDemo:
    def __init__(self,AK,SK):
        self.AK=AK
        self.SK=SK
        self.access_token=self.get_access_token()

    def get_access_token(self):
        token_host = 'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id={ak}&client_secret={sk}'.format(
            ak=self.AK, sk=self.SK)
        header = {'Content-Type': 'application/json; charset=UTF-8'}
        response = requests.post(url=token_host, headers=header)
        content = response.json()
        access_token = content.get("access_token")
        return access_token

    def baidu_selfie_anime(self,image_path,save_path):
        request_url = "https://aip.baidubce.com/rest/2.0/image-process/v1/selfie_anime"
        # 二进制方式打开图片文件
        f = open(image_path, 'rb')
        img = base64.b64encode(f.read())
        params = {"image": img}
        request_url = request_url + "?access_token=" + self.access_token
        headers = {'content-type': 'application/x-www-form-urlencoded'}
        try:
            response = requests.post(request_url, data=params, headers=headers)
            if response.status_code==200:
                result= response.json()
                print(result)
                image=result.get("image")
                if image:
                    img_data=base64.b64decode(image)
                    with open(save_path,"wb") as f:
                        f.write(img_data)
                    return {"msg":"完成"}
            return {"msg":"失败"}
        except Exception as e:
            return {"msg":"失败:%s"%e}

if __name__ == '__main__':
    AK = "*******"  # 官网获取的AK 需要你先开通和创建应用
    SK = "*******"  # 官网获取的SK
    anime_obj = AnimeDemo(AK=AK, SK=SK)
    res=anime_obj.baidu_selfie_anime(r"D:\images\微信图片_20200722221927.jpg",r"C:\Users\Administrator\Desktop\卡通.jpg")
    print(res)

二、效果

感觉一般般,反正有500次免费的,凑合!

三、增加图像风格

import base64

import requests


class AnimeDemo:
    def __init__(self, AK, SK):
        self.AK = AK
        self.SK = SK
        self.access_token = self.get_access_token()

    def get_access_token(self):
        token_host = 'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id={ak}&client_secret={sk}'.format(
            ak=self.AK, sk=self.SK)
        header = {'Content-Type': 'application/json; charset=UTF-8'}
        response = requests.post(url=token_host, headers=header)
        content = response.json()
        access_token = content.get("access_token")
        return access_token

    def baidu_selfie_anime(self, image_path, save_path):
        request_url = "https://aip.baidubce.com/rest/2.0/image-process/v1/selfie_anime"
        # 二进制方式打开图片文件
        f = open(image_path, 'rb')
        img = base64.b64encode(f.read())
        params = {"image": img}
        request_url = request_url + "?access_token=" + self.access_token
        headers = {'content-type': 'application/x-www-form-urlencoded'}
        try:
            response = requests.post(request_url, data=params, headers=headers)
            if response.status_code == 200:
                result = response.json()
                print(result)
                image = result.get("image")
                if image:
                    img_data = base64.b64decode(image)
                    with open(save_path, "wb") as f:
                        f.write(img_data)
                    return {"msg": "完成"}
            return {"msg": "失败"}
        except Exception as e:
            return {"msg": "失败:%s" % e}

    def baidu_style_trans(self, image_path, save_path):
        '''
        图像风格转换
        cartoon:卡通画风格
        pencil:铅笔风格
        color_pencil:彩色铅笔画风格
        warm:彩色糖块油画风格
        wave:神奈川冲浪里油画风格
        lavender:薰衣草油画风格
        mononoke:奇异油画风格
        scream:呐喊油画风格
        gothic:哥特油画风格
        '''
        request_url = "https://aip.baidubce.com/rest/2.0/image-process/v1/style_trans"
        # 二进制方式打开图片文件
        f = open(image_path, 'rb')
        img = base64.b64encode(f.read())
        params = {"image": img, "option": "gothic"}
        request_url = request_url + "?access_token=" + self.access_token
        headers = {'content-type': 'application/x-www-form-urlencoded'}
        try:
            response = requests.post(request_url, data=params, headers=headers)
            if response.status_code == 200:
                result = response.json()
                print(result)
                image = result.get("image")
                if image:
                    img_data = base64.b64decode(image)
                    with open(save_path, "wb") as f:
                        f.write(img_data)
                    return {"msg": "完成"}
            return {"msg": "失败"}
        except Exception as e:
            return {"msg": "失败:%s" % e}

 

posted @ 2020-07-22 22:32  Maple_feng  阅读(694)  评论(0编辑  收藏  举报