调用百度API实现图像风格转换
目录
- 1、作者介绍
- 2、基本概念
- 2.1 人工智能云服务与百度智能云
- 2.2 图像风格转换
- 3、调用百度API实现图像风格转换
- 3.1 配置百度智能云平台
- 3.2 环境配置
- 3.3 完整代码实现
- 3.4 效果展示
- 3.5 问题与分析
1、作者介绍
张元帮,男,西安工程大学电子信息学院,2022级研究生
研究方向:语音信号处理
电子邮件:2899460070@qq.com
陈梦丹,女,西安工程大学电子信息学院,2022级硕士研究生,张宏伟人工智能课题组
研究方向:机器视觉与人工智能
电子邮件:1169738496@qq.com
2、基本概念
2.1 人工智能云服务与百度智能云
人工智能云服务是一种基于云计算、虚拟化和分布式处理技术的在线服务,提供了各种人工智能相关的功能,包括自然语言处理(NLP)、图像识别、声音识别、机器学习、深度学习等。人工智能云服务通过API的方式对外提供接口,用户可以通过调用这些API来使用相应的人工智能功能,而无需在本地搭建和维护复杂的人工智能系统,可以简化开发流程,缩短研发时间,并且具有良好的可扩展性和兼容性。目前,市面上存在多种人工智能云服务提供商,例如百度、阿里、腾讯、华为等。百度智能云是百度提供的一系列云端API接口,其中就包括人工智能云服务,可以用于实现文本分析、图像识别、语音识别和自然语言处理等各种应用场景。
2.2 图像风格转换
图像风格转换是一种利用深度学习和神经网络模型来实现图片风格转换的技术。该技术可以将一张图片按照指定的艺术风格进行重构,使得原图片的内容保留不变,同时又呈现出了与所选艺术风格相似的视觉效果。

通俗地说,就是将一张照片做成另一个不同风格的照片。例如:将一张普通的花卉照片以著名画作《向日葵》的风格呈现出来。这种技术常常被应用于数字艺术、电影制作、游戏动画等领域。
其中,百度智能云的API支持将图像转化成卡通画、铅笔画、彩色铅笔画,或者哥特油画、彩色糖块油画、呐喊油画、神奈川冲浪里油画、奇异油画、薰衣草油画等共计9种风格。下面演示如何使用百度智能云的API接口实现图像风格转换。
3、调用百度API实现图像风格转换
3.1 配置百度智能云平台
注册并登录百度智能云账号进入下图界面,选择右上角“控制台”模块:

选择“产品服务”中“人工智能”模块的“图像增强与特效”项目:
点击领取免费的接口资源(实名认证后可获取):

选择全部可领接口,然后点击0元领取(这里已经领取,不能再领)
在 “应用列表” 中点击 “创建应用”,免费创建图像风格转换模块:

创建成功的应用模块如下,从中可以获取个人应用模块的**API Key和Secret Key**:

3.2 环境配置
代码使用python3运行,导入的模块有Requests、base64、json、PIL、io、os。在运行代码前,需要检查运行环境是否齐全。以下是对这些导入模块的介绍:
- Requests是Python编程语言第三方库,用于发送 HTTP 请求和处理响应。它是一个常用的Python HTTP客户端库,可以发送HTTP/1.1请求,包括GET、POST、PUT、DELETE等请求方法。
- base64库是Python标准库之一,提供了一些用于将二进制数据(比如图片、音频、视频文件等)转换为 ASCII 字符集中可打印字符的编码方法,以便在网络中传输或存储。
- Json库是Python语言自带的标准库之一,用于将Python对象(如列表、字典等)转换为JSON格式的字符串以及将JSON格式的字符串转换为Python对象。
- PIL(Python Imaging Library)是Python编程语言中一个常用的图像处理库。这个库通过内置的图片格式扩展模块及自带的工具,可以对常见的图像文件进行读写并进行多种基本的图像处理操作。
- Python标准库中的io库提供了一个通用的Python I/O体系结构,可以轻松地访问各种类型的文件(文本文件、二进制文件、管道和套接字等),并统一这些不同文件类型的输入输出操作。
- os库是Python标准库提供的操作系统接口库,它封装了大量实用的函数来和操作系统交互。通过该库,我们可以实现一些常见的文件和目录相关的操作、操作系统平台相关功能的调用、进程相关操作等等。
3.3 完整代码实现
在代码的指定位置填入API_Key、Secret_Key、图片位置、风格,然后运行代码。其中可选风格如下:
- cartoon:卡通画风格
- pencil:铅笔风格
- color_pencil:彩色铅笔画风格
- warm:彩色糖块油画风格
- wave:神奈川冲浪里油画风格
- lavender:薰衣草油画风格
- mononoke:奇异油画风格
- scream:呐喊油画风格
- gothic:哥特油画风格
代码实现:
import requests
import base64
import json
from PIL import Image
import io
import os###############修改这里,然后运行##################
"""
可选图片风格:
cartoon:卡通画风格
pencil:铅笔风格
color_pencil:彩色铅笔画风格
warm:彩色糖块油画风格
wave:神奈川冲浪里油画风格
lavender:薰衣草油画风格
mononoke:奇异油画风格
scream:呐喊油画风格
gothic:哥特油画风格
"""API_Key=' 你的API_Key ' #API_Key
Secret_Key=' 你的Secret_Key ' #Secret_Keyimg_location='picture.png' #图片放置位置
style="warm" #图片风格
###############################################class BaiduImgStyleConv:def __init__(self, API_Key, Secret_Key,request_url,headers):self.req_url = request_urlself.AK=API_Keyself.SK=Secret_Keyself.headers=headersdef set_para(self,img_location,style):'''该方法实现图片和风格设置'''try:f = open(img_location, 'rb') #尝试打开图片except:print("错误:没有找到图片或者图片格式不支持,请检查图片路径")#无法打开图片exit()img = base64.b64encode(f.read())# 二进制方式打开图片文件if style in {'cartoon','pencil','color_pencil','warm','wave','lavender','mononoke','scream','gothic'}:#检测风格是否在列表中self.params = {"image": img, "option": style}else:print("错误:图像风格不对,请检查拼写")exit()def get_accessToken(self):'''该方法实现获得Token'''host = 'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=' + self.AK + '&client_secret=' + self.SKresponse = requests.get(host, headers=self.headers)json_result = json.loads(response.text)try:print('token获取正常=',json_result['access_token'])return json_result['access_token']except:print('token获取出现问题,这是错误原因:',json_result['error'], json_result['error_description']+'\n建议先检查百度智能云的图像风格转换应用是否可用,其次保证上面的API_Key和Secret_Key填写正确')exit()def get_convImg(self):'''该方法实现图像风格转换'''access_token = self.get_accessToken()request_url = self.req_url + "?access_token=" + access_tokenresponse = requests.post(request_url, data=self.params, headers=self.headers)#获取响应if response:# 解码base64编码图片并保存为jpg格式img_data = base64.b64decode(response.json()['image'])pil_image = Image.open(io.BytesIO(img_data))pil_image.show()# 保存为jpg格式,并以log_id命名文件output_filename = str(response.json()['log_id']) + ".jpg"pil_image.save(output_filename, "JPEG")print("转换后的图片已保存在",os.getcwd()+'\\'+output_filename)else:print('错误:解析返回数据时出现问题')if __name__=='__main__':#实例化对象img_conv=BaiduImgStyleConv(API_Key=API_Key,Secret_Key=Secret_Key,request_url = "https://aip.baidubce.com/rest/2.0/image-process/v1/style_trans",headers={'content-type': 'application/x-www-form-urlencoded'})#设置图片和风格img_conv.set_para(img_location=img_location,style=style)#得到转换后的图片img_conv.get_convImg()
3.4 效果展示
下图为原图经不同风格(卡通、铅笔、呐喊)转换后的效果图:

3.5 问题与分析
- 已对部分常见报错在代码中进行了解释,根据要求检查即可。
- 弹出“token获取出现问题……”,这一般是因为百度智能云没设置好或者key填错了导致的,如果确定两个key没有填错,务必检查API调用的余量。
相关文章:
调用百度API实现图像风格转换
目录 1、作者介绍2、基本概念2.1 人工智能云服务与百度智能云2.2 图像风格转换 3、调用百度API实现图像风格转换3.1 配置百度智能云平台3.2 环境配置3.3 完整代码实现3.4 效果展示3.5 问题与分析 1、作者介绍 张元帮,男,西安工程大学电子信息学院&#…...
5个最好的WooCommerce商城自动化动作来增加销售量
您是否正在寻找简单智能的方法来自动执行任务并增加 WooCommerce 商店的销售额? 通过在线商店中的自动化任务,您可以在发展业务和增加销售额的同时节省时间和金钱。 在本文中,我们将向您展示如何使用 WooCommerce商城自动化来增加销售额。 …...
打开数据结构大门——实现小小顺序表
文章目录 前言顺序表的概念及分类搭建项目(Seqlist):apple:搭建一个顺序表结构&&定义所需头文件&&函数:banana:初始化:pear:打印:watermelon:数据个数:smile:检查容量:fireworks:判空:tea:在尾部插入数据:tomato:在尾部删除数据:lemon:在…...
一.RxJava
1.RxJava使用场景 RxJava核心思想 Rx思维:响应式编程,从起点到终点,中途不能断掉,并且可以在中途添加拦截. 生活中的例子: 起点(分发事件,我饿了)->下楼->去餐厅->点餐->终点(吃饭,消费事件) 程序中的例子: 起点(分发事件,点击登录)->登录API->请求服务器-…...
如何使用 VSCode 软件运行C代码
VSCode 的下载和扩展的配置可以参考文章:VSCode 的安装与插件配置。 VSCode 是很好用的编辑器,通过给其配置 MinGW-w64 插件就可以在它上面编译运行C代码了。 在没有配置 MinGW-w64 插件时,在 VSCode 中运行下面的代码后打印如下图所示。 这…...
C# 调用Matlab打包的 DLL文件(傻瓜式操作)
1、准备Matlab代码 2. 打包 在matlab命令行窗口输入deploytool,打开MATLAB Complier,选择Library Compiler 在TYPE中选择.NET Assembly;在EXPORTED FUNCTIONS中选择要打包的文件;可以选择为自己打包的文件自定义NameSpace名称,本例中将NameSpace定义为…...
微信小程序学习实录3(环境部署、百度地图微信小程序、单击更换图标、弹窗信息、导航、支持腾讯百度高德地图调起)
百度地图微信小程序 一、环境部署1.need to be declared in the requiredPrivateInfos2.api.map.baidu.com 不在以下 request 合法域名3.width and heigth of marker id 9 are required 二、核心代码(一)逻辑层index.js(二)渲染层…...
【面试题】中高级前端工程师都需要熟悉的技能--前端缓存
前端缓存 一、前言二、web缓存分类1. HTTP缓存:2. 浏览器缓存:3. Service Worker:4. Web Storage缓存:5. 内存缓存: 三、http缓存详解1、http缓存类型a. 基于有效时间的缓存控制:b. 基于资源标识的缓存&…...
小红书数据分析:首播卖6亿,小红书直播开启新纪元!
5月22日,章小蕙在小红书开启了第一场带货直播。继董洁之后,小红书又迎来一位超级带货KOL。 据千瓜数据显示,相关话题#章小蕙小红书直播#上线不到30天,话题浏览量就高达2814.89万,笔记互动量达22.24万。 图 | 千瓜数据…...
Weex中,关于组件的水平排列竖直排列居中对齐居左对齐居右对齐低部对齐顶部对齐布局对齐说明
容器内子组件排列方向 子组件竖直方向排列(默认) 子组件水平方向排列 <style> .container {flex-direction: row;direction: ltr; } </style>子组件在父组件容器中的对齐方式 我们主要使用两个属性实现子组件在父组件的对齐方式ÿ…...
服务(第二十八篇)rsync
配置rsync源服务器: #建立/etc/rsyncd.conf 配置文件 vim /etc/rsyncd.conf #添加以下配置项 uid root gid root use chroot yes #禁锢在源目录 address 192.168.80.10 …...
Vue 3 第二十五章:插件(Plugins)
文章目录 1. 创建插件2. 使用插件3. 插件选项 Vue 3 的插件系统允许我们扩展 Vue 的功能和行为,并且可以在多个组件之间共享代码和逻辑。插件可以用于添加全局组件、指令、混入、过滤器等,并且可以在应用程序启动时自动安装。 1. 创建插件 创建插件需要…...
Android 系统内的守护进程 - main类服务(3) : installd
声明 只要是操作系统,不用说的就是其中肯定会运行着一些很多守护进程(daemon)来完成很多杂乱的工作。通过系统中的init.rc文件也可以看出来,其中每个service中就包含着系统后台服务进程。而这些服务被分为:core类服务(adbd/servicemanager/healthd/lmkd/logd/vold)和mai…...
华为OD机试真题 Java 实现【对称字符串】【2023Q2 200分】
一、题目描述 对称就是最大的美学,现有一道关于对称字符串的美学。 已知: 第 1 个字符串:R 第 2 个字符串:BR 第 3 个字符串:RBBR 第 4 个字符串:BRRBRBBR 第 5 个字符串:RBBRBRRBBRRBRBBR …...
day18文件上传下载与三层架构思想
servlet文件上传 注意事项:在写了响应后,若后面还需要执行代码,需要添加return; apach的servlet3.0提供了文件上传的功能. **在客户端中的jsp如何上传文件:**使用form标签 使用input标签type的file属性 form表单中的的enctype必须加:使用二进制的方式进行传输,否则不能进行…...
Async/await详解
一、概念与背景 他是在ES8被提出的一种异步方式,它其实是promise的一种语法糖 二、 Async关键字 async 关键字用于快速声明异步函数 ,可以用在函数声明、函数表达式、箭头函数和方法上 async function foo() {} let bar async function() {}; let…...
Mysql基础 — DDL、DML、DQL、DCL、函数、约束
文章目录 Mysql基础一、数据模型1.1 关系型数据库与非关系型数据库1.2 Mysql 数据模型 二、SQL2.1 SQL 通用语法2.2 SQL分类2.3 DDL2.3.1 数据库操作2.3.2 表操作 — 创建 & 查询2.3.3 表操作— 修改&删除2.3.4 数据类型2.3.4.1 数值类型2.3.4.2 字符串类型2.3.4.3 日期…...
中国移动董宁:深耕区块链的第八年,我仍期待挑战丨对话MVP
区块链技术对于多数人来说还是“新鲜”的代名词时,董宁已经成为这项技术的老朋友。 董宁2015年进入区块链领域,现任中国移动研究院技术总监、区块链首席专家。作为“老友”,董宁见证了区块链技术多个爆发式增长和平稳发展的阶段,…...
AI孙燕姿项目实现
最近在b站刷到很多关于ai孙笑川唱的歌曲,加上最近大火的ai孙燕姿, 这下“冷门歌手”整成热门歌手了 于是写下一篇文章, 如何实现属于的ai歌手。 注意滥用ai,侵犯他人的名誉是要承担法律责任的 下面是一些所需的文件链接ÿ…...
传统机器学习(六)集成算法(2)—Adaboost算法原理
传统机器学习(六)集成算法(2)—Adaboost算法原理 1 算法概述 Adaboost(Adaptive Boosting)是一种自适应增强算法,它集成多个弱决策器进行决策。 Adaboost解决二分类问题,且二分类的标签为{-1,1}。注:一定是{-1,1},不能是{0,1} …...
React第五十七节 Router中RouterProvider使用详解及注意事项
前言 在 React Router v6.4 中,RouterProvider 是一个核心组件,用于提供基于数据路由(data routers)的新型路由方案。 它替代了传统的 <BrowserRouter>,支持更强大的数据加载和操作功能(如 loader 和…...
在HarmonyOS ArkTS ArkUI-X 5.0及以上版本中,手势开发全攻略:
在 HarmonyOS 应用开发中,手势交互是连接用户与设备的核心纽带。ArkTS 框架提供了丰富的手势处理能力,既支持点击、长按、拖拽等基础单一手势的精细控制,也能通过多种绑定策略解决父子组件的手势竞争问题。本文将结合官方开发文档,…...
无法与IP建立连接,未能下载VSCode服务器
如题,在远程连接服务器的时候突然遇到了这个提示。 查阅了一圈,发现是VSCode版本自动更新惹的祸!!! 在VSCode的帮助->关于这里发现前几天VSCode自动更新了,我的版本号变成了1.100.3 才导致了远程连接出…...
中医有效性探讨
文章目录 西医是如何发展到以生物化学为药理基础的现代医学?传统医学奠基期(远古 - 17 世纪)近代医学转型期(17 世纪 - 19 世纪末)现代医学成熟期(20世纪至今) 中医的源远流长和一脉相承远古至…...
推荐 github 项目:GeminiImageApp(图片生成方向,可以做一定的素材)
推荐 github 项目:GeminiImageApp(图片生成方向,可以做一定的素材) 这个项目能干嘛? 使用 gemini 2.0 的 api 和 google 其他的 api 来做衍生处理 简化和优化了文生图和图生图的行为(我的最主要) 并且有一些目标检测和切割(我用不到) 视频和 imagefx 因为没 a…...
A2A JS SDK 完整教程:快速入门指南
目录 什么是 A2A JS SDK?A2A JS 安装与设置A2A JS 核心概念创建你的第一个 A2A JS 代理A2A JS 服务端开发A2A JS 客户端使用A2A JS 高级特性A2A JS 最佳实践A2A JS 故障排除 什么是 A2A JS SDK? A2A JS SDK 是一个专为 JavaScript/TypeScript 开发者设计的强大库ÿ…...
AI+无人机如何守护濒危物种?YOLOv8实现95%精准识别
【导读】 野生动物监测在理解和保护生态系统中发挥着至关重要的作用。然而,传统的野生动物观察方法往往耗时耗力、成本高昂且范围有限。无人机的出现为野生动物监测提供了有前景的替代方案,能够实现大范围覆盖并远程采集数据。尽管具备这些优势…...
莫兰迪高级灰总结计划简约商务通用PPT模版
莫兰迪高级灰总结计划简约商务通用PPT模版,莫兰迪调色板清新简约工作汇报PPT模版,莫兰迪时尚风极简设计PPT模版,大学生毕业论文答辩PPT模版,莫兰迪配色总结计划简约商务通用PPT模版,莫兰迪商务汇报PPT模版,…...
根目录0xa0属性对应的Ntfs!_SCB中的FileObject是什么时候被建立的----NTFS源代码分析--重要
根目录0xa0属性对应的Ntfs!_SCB中的FileObject是什么时候被建立的 第一部分: 0: kd> g Breakpoint 9 hit Ntfs!ReadIndexBuffer: f7173886 55 push ebp 0: kd> kc # 00 Ntfs!ReadIndexBuffer 01 Ntfs!FindFirstIndexEntry 02 Ntfs!NtfsUpda…...
【SpringBoot自动化部署】
SpringBoot自动化部署方法 使用Jenkins进行持续集成与部署 Jenkins是最常用的自动化部署工具之一,能够实现代码拉取、构建、测试和部署的全流程自动化。 配置Jenkins任务时,需要添加Git仓库地址和凭证,设置构建触发器(如GitHub…...
