当前位置: 首页 > news >正文

调用百度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中,关于组件的水平排列竖直排列居中对齐居左对齐居右对齐低部对齐顶部对齐布局对齐说明

容器内子组件排列方向 子组件竖直方向排列&#xff08;默认&#xff09; 子组件水平方向排列 <style> .container {flex-direction: row;direction: ltr; } </style>子组件在父组件容器中的对齐方式 我们主要使用两个属性实现子组件在父组件的对齐方式&#xff…...

服务(第二十八篇)rsync

配置rsync源服务器&#xff1a; #建立/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 的功能和行为&#xff0c;并且可以在多个组件之间共享代码和逻辑。插件可以用于添加全局组件、指令、混入、过滤器等&#xff0c;并且可以在应用程序启动时自动安装。 1. 创建插件 创建插件需要…...

Android 系统内的守护进程 - main类服务(3) : installd

声明 只要是操作系统,不用说的就是其中肯定会运行着一些很多守护进程(daemon)来完成很多杂乱的工作。通过系统中的init.rc文件也可以看出来,其中每个service中就包含着系统后台服务进程。而这些服务被分为:core类服务(adbd/servicemanager/healthd/lmkd/logd/vold)和mai…...

华为OD机试真题 Java 实现【对称字符串】【2023Q2 200分】

一、题目描述 对称就是最大的美学&#xff0c;现有一道关于对称字符串的美学。 已知&#xff1a; 第 1 个字符串&#xff1a;R 第 2 个字符串&#xff1a;BR 第 3 个字符串&#xff1a;RBBR 第 4 个字符串&#xff1a;BRRBRBBR 第 5 个字符串&#xff1a;RBBRBRRBBRRBRBBR …...

day18文件上传下载与三层架构思想

servlet文件上传 注意事项:在写了响应后,若后面还需要执行代码,需要添加return; apach的servlet3.0提供了文件上传的功能. **在客户端中的jsp如何上传文件:**使用form标签 使用input标签type的file属性 form表单中的的enctype必须加:使用二进制的方式进行传输,否则不能进行…...

Async/await详解

一、概念与背景 他是在ES8被提出的一种异步方式&#xff0c;它其实是promise的一种语法糖 二、 Async关键字 async 关键字用于快速声明异步函数 &#xff0c;可以用在函数声明、函数表达式、箭头函数和方法上 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

区块链技术对于多数人来说还是“新鲜”的代名词时&#xff0c;董宁已经成为这项技术的老朋友。 董宁2015年进入区块链领域&#xff0c;现任中国移动研究院技术总监、区块链首席专家。作为“老友”&#xff0c;董宁见证了区块链技术多个爆发式增长和平稳发展的阶段&#xff0c;…...

AI孙燕姿项目实现

最近在b站刷到很多关于ai孙笑川唱的歌曲&#xff0c;加上最近大火的ai孙燕姿&#xff0c; 这下“冷门歌手”整成热门歌手了 于是写下一篇文章&#xff0c; 如何实现属于的ai歌手。 注意滥用ai&#xff0c;侵犯他人的名誉是要承担法律责任的 下面是一些所需的文件链接&#xff…...

传统机器学习(六)集成算法(2)—Adaboost算法原理

传统机器学习(六)集成算法(2)—Adaboost算法原理 1 算法概述 Adaboost(Adaptive Boosting)是一种自适应增强算法&#xff0c;它集成多个弱决策器进行决策。 Adaboost解决二分类问题&#xff0c;且二分类的标签为{-1,1}。注&#xff1a;一定是{-1,1}&#xff0c;不能是{0,1} …...

Lombok 的 @Data 注解失效,未生成 getter/setter 方法引发的HTTP 406 错误

HTTP 状态码 406 (Not Acceptable) 和 500 (Internal Server Error) 是两类完全不同的错误&#xff0c;它们的含义、原因和解决方法都有显著区别。以下是详细对比&#xff1a; 1. HTTP 406 (Not Acceptable) 含义&#xff1a; 客户端请求的内容类型与服务器支持的内容类型不匹…...

Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以?

Golang 面试经典题&#xff1a;map 的 key 可以是什么类型&#xff1f;哪些不可以&#xff1f; 在 Golang 的面试中&#xff0c;map 类型的使用是一个常见的考点&#xff0c;其中对 key 类型的合法性 是一道常被提及的基础却很容易被忽视的问题。本文将带你深入理解 Golang 中…...

【Oracle APEX开发小技巧12】

有如下需求&#xff1a; 有一个问题反馈页面&#xff0c;要实现在apex页面展示能直观看到反馈时间超过7天未处理的数据&#xff0c;方便管理员及时处理反馈。 我的方法&#xff1a;直接将逻辑写在SQL中&#xff0c;这样可以直接在页面展示 完整代码&#xff1a; SELECTSF.FE…...

【入坑系列】TiDB 强制索引在不同库下不生效问题

文章目录 背景SQL 优化情况线上SQL运行情况分析怀疑1:执行计划绑定问题?尝试:SHOW WARNINGS 查看警告探索 TiDB 的 USE_INDEX 写法Hint 不生效问题排查解决参考背景 项目中使用 TiDB 数据库,并对 SQL 进行优化了,添加了强制索引。 UAT 环境已经生效,但 PROD 环境强制索…...

Day131 | 灵神 | 回溯算法 | 子集型 子集

Day131 | 灵神 | 回溯算法 | 子集型 子集 78.子集 78. 子集 - 力扣&#xff08;LeetCode&#xff09; 思路&#xff1a; 笔者写过很多次这道题了&#xff0c;不想写题解了&#xff0c;大家看灵神讲解吧 回溯算法套路①子集型回溯【基础算法精讲 14】_哔哩哔哩_bilibili 完…...

【网络安全产品大调研系列】2. 体验漏洞扫描

前言 2023 年漏洞扫描服务市场规模预计为 3.06&#xff08;十亿美元&#xff09;。漏洞扫描服务市场行业预计将从 2024 年的 3.48&#xff08;十亿美元&#xff09;增长到 2032 年的 9.54&#xff08;十亿美元&#xff09;。预测期内漏洞扫描服务市场 CAGR&#xff08;增长率&…...

Java - Mysql数据类型对应

Mysql数据类型java数据类型备注整型INT/INTEGERint / java.lang.Integer–BIGINTlong/java.lang.Long–––浮点型FLOATfloat/java.lang.FloatDOUBLEdouble/java.lang.Double–DECIMAL/NUMERICjava.math.BigDecimal字符串型CHARjava.lang.String固定长度字符串VARCHARjava.lang…...

QT: `long long` 类型转换为 `QString` 2025.6.5

在 Qt 中&#xff0c;将 long long 类型转换为 QString 可以通过以下两种常用方法实现&#xff1a; 方法 1&#xff1a;使用 QString::number() 直接调用 QString 的静态方法 number()&#xff0c;将数值转换为字符串&#xff1a; long long value 1234567890123456789LL; …...

解读《网络安全法》最新修订,把握网络安全新趋势

《网络安全法》自2017年施行以来&#xff0c;在维护网络空间安全方面发挥了重要作用。但随着网络环境的日益复杂&#xff0c;网络攻击、数据泄露等事件频发&#xff0c;现行法律已难以完全适应新的风险挑战。 2025年3月28日&#xff0c;国家网信办会同相关部门起草了《网络安全…...

前端高频面试题2:浏览器/计算机网络

本专栏相关链接 前端高频面试题1&#xff1a;HTML/CSS 前端高频面试题2&#xff1a;浏览器/计算机网络 前端高频面试题3&#xff1a;JavaScript 1.什么是强缓存、协商缓存&#xff1f; 强缓存&#xff1a; 当浏览器请求资源时&#xff0c;首先检查本地缓存是否命中。如果命…...