基于 Serverless+OSS 分分钟实现图片秒变素描

场景介绍

小明接到学校老师安排的任务,需要批量将班级里同学们拍的普通照片转换为素描图,供课堂游戏使用,于是求助到程序员老爸,机智的程序员老爸分分钟用几行Python代码解决:在阿里云Serverless函数计算服务中部署普通图片转素描图函数服务,实现将批量上传到指定OSS桶内的图片自动转换为素描图并保存到另一个OSS桶内。

目标读者

了解阿里云Serverless、OSS、FC产品,有一定的云计算实践经验及Python编程经验,熟悉阿里云鉴权系统及图片处理OpenCV库的个人开发者。

相关概念

Serverless:全称Serverless computing,既无服务器计算,是云计算的一种新模式,区别于传统的IaaS、PaaS、SaaS。无服务器运算不代表它真的不需要服务,而是指普通开发者不用过多考虑服务器、app运行环境及各种周边依赖问题,计算资源真正成为一种服务而不是服务器或者容器。它允许开发者在以管理某个具体功能函数的粒度进行部署及运维管理,以便让开发者专注于核心业务逻辑,更快速地开发应用。

Function Compute:前面讲的Serverless是一种抽象层次更高说法,“FaaS + BaaS”是Serverless架构模式的一种实现,阿里云Function Compute就是典型的FaaS,配合阿里云丰富的BaaS(SLS、OSS、RDS等)服务,可以非常快速的部署应用。FC是一种基于事件驱动的全托管计算服务,用户无需采购与管理服务器等基础设施,只需编写并上传代码。FC使用计算、存储资源,弹性地、可靠地运行任务,并提供日志查询、性能监控和报警等功能。

前提条件/环境准备

1.已开通阿里云FC、OSS、SLS服务

2.提前准备好普通图片转换为素描图的Python代码

3.提前准备好测试图片

4.提前创建好两个测试用的OSS桶(不能将转换后的图片上传到同一个OSS bucket中,这会导致函数被无限循环执行)

操作步骤

步骤一:创建函数计算FC服务

1. 选择函数及服务点击“创建服务”,填写名称和描述:

2. 进入函数管理,点击“创建函数”:

运行环境选择Python 3.6,代码上传方式选择使用示例代码,请求处理程序类型选择处理事件请求

触发器选择OSS,Bucket选择提前创建好的sketch-image-input,文件后缀为.jpg,防止其他类型的文件上传后误触发函数执行

授权角色

3. 测试默认提供的Python函数,熟悉下基本功能:

步骤二:编写Python脚本,实现普通图片转换为素描图函数

1. 在编辑器中,输入提前写好的Python代码:

参考代码如下:

 

函数编写过程中,参考了阿里云提供的SDK案例,内容非常丰富,想要的功能都有,且FC提供的Python运行环境内置oss、OpenCV等常用模块,很好的支撑普通开发者快速实现功能,点赞 :

FC使用OSS触发器SDK:https://help.aliyun.com/document_detail/74765.html

OSS文件下载、上传SDK:https://help.aliyun.com/document_detail/88426.html

FC Python环境内置模块:https://help.aliyun.com/document_detail/158208.html

2. 部署代码并开通SLS日志服务,便于调试代码时查看日志,真的很方便 :

方案验证

1.上传本地测试图片到OSS sketch-image-input桶中:

2.观察函数sketch_image调用日志信息及监控信息:

3.查看OSS sketch-image-output桶内转换后的素描图,效果还不错 :

4.批量上传图片测试,函数功能很稳定 :

原文链接

本文为阿里云原创内容,未经允许不得转载。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/510507.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

解析 RocketMQ 业务消息 - “顺序消息”

引言 Apache RocketMQ 诞生至今,历经十余年大规模业务稳定性打磨,服务了阿里集团内部业务以及阿里云数以万计的企业客户。作为金融级可靠的业务消息方案,RocketMQ 从创建之初就一直专注于业务集成领域的异步通信能力构建。本篇将继续业务消息…

Koordinator 0.6:企业级容器调度系统解决方案,引入 CPU 精细编排、资源预留与全新的重调度框架

阿里云原生开源的混部系统 Koordinator 基于阿里超大规模混部生产实践经验而来,旨在为用户打造云原生场景下接入成本最低、混部效率最佳的解决方案,助力用户企业实现云原生后提升计算资源利用率、降低 IT 成本。 经过社区多位成员的贡献,Koor…

KubeVela Maintainer 徐佳航:什么样的开源项目将具有可延续的生命力?

云原生的技术价值喻示着它就是未来,加入到一个具有可延续性生命力的开源社区,可以帮助我们更快地到达那里。——徐佳航,KubeVela Maintainer,来自招商银行基础设施研发中心云平台及运维平台开发团队。来自招商银行基础设施研发中心…

龙蜥社区首推“分层分类”顶设 发展以云为终态的开源产业创新生态

在刚刚结束的 2022 开放原子全球开源峰会 OpenAnolis 分论坛上,龙蜥社区技术委员会主席杨勇做了《OpenAnolis 社区技术发展报告》的主题演讲,分享龙蜥社区如何从 0 到 1 实现原生社区布局,以及发展以云为终态的开源产业创新生态。 全文整理如…

友邦人寿可观测体系设计与落地

业务场景与挑战 友邦保险是香港联合交易所上市的人寿保险集团,覆盖 18 个市场。截至 2021 年 12 月 31 号,总资产 3400 亿美元。 友邦保险于 1992 年在上海设立分公司,是改革开放后最早一批获发个人人身保险业务营业执照的非本土保险机构之…

如何写出有效的单元测试

什么是单元测试 《单元测试的艺术》中对单元测试的定义: 一个单元测试是一段自动化的代码,这段代码调用被测试的工作单元,之后对这个单元的单个最终结果的某些假设进行校验。 单元测试几乎都是用单元测试框架编写的;只要产品代…

测试环境不稳定复杂的必然性及其对策

这篇文章想要讲的,的确是两件事情: 为什么测试环境的不稳定是必然的,怎么让它尽量稳定一点?为什么测试环境比生产环境更复杂,怎么让它尽量简单一点? 此外,还会谈一谈对测试环境和生产环境的区别…

【计算几何】线段相交

问题描述:已知两条线段P1P2和Q1Q2,判断P1P2和Q1Q2是否相交,若相交,求出交点。 两条线段的位置关系可以分为三类:有重合部分、无重合部分但有交点、无交点。 算法的步骤如下: 1.快速排斥实验。 设以线段…

代码圈复杂度治理小结

网上有个段子,说建筑工程师不会轻易答应会给摩天大楼增加一个地下室,但代码开发工程师却经常在干这样的事,并且总有人会对你说“这个需求很简单”。到土里埋个雷,这确实不复杂,但我们往往面临的真实场景其实是“在一片…

MSE 治理中心重磅升级-流量治理、数据库治理、同 AZ 优先

本次 MSE 治理中心在限流降级、数据库治理及同 AZ 优先方面进行了重磅升级,对微服务治理的弹性、依赖中间件的稳定性及流量调度的性能进行全面增强,致力于打造云原生时代的微服务治理平台。 前情回顾 在介绍升级能力之前,先简要回顾 MSE 产…

基于阿里云 Serverless 快速部署 Function 的极致体验

1.Serverless 前世今生 1.1 Serverless 背景介绍 云计算的不断发展,涌现出很多改变传统IT架构和运维方式的新技术,而以虚拟机、容器、微服务为代表的技术更是在各个层面不断提升云服务的技术能力,它们将应用和环境中很多通用能力变成了一种…

性能提升1倍,成本直降50%!基于龙蜥指令加速的下一代云原生网关

​ 技术背景 网络信息传输的可靠性、机密性和完整性要求日渐提升,HTTPS 协议已经广泛应用。HTTPS 的 SSL/TLS 协议涉及加解密、校验、签名等密码学计算,消耗较多 CPU 计算资源。因此 CPU 硬件厂商推出过多种加速卸载方案,如 AES-NI、QAT、KA…

TiDB、OceanBase、PolarDB-X、CockroachDB 二级索引写入性能测评

为什么要做这个测试 二级索引是关系型数据库相较于NoSQL数据库的一个关键差异。二级索引必须是强一致的,因此索引的写入需要与主键的写入放在一个事务当中,事务的性能是二级索引性能的基础。 目前市面上的分布式数据库中,从使用体验的角度看…

EMQX + PolarDB-X 一站式 IoT 数据解决方案

本文整理自 EMQX 产品经理李国伟,在PolarDB开源社区中关于EMQX与PolarDB-X构建一站式IoT数据解决方案的分享。本篇内容主要分为四个部分: 1. IoT数据特性 2. EMQX介绍 3. EMQX与PolarDB-X集成 4. EMQXPolarDB-X方案DEMO 一、IoT数据特性 物联网应用场景…

阿里 Seata 新版本终于解决了 TCC 模式的幂等、悬挂和空回滚问题

大家好,我是君哥。 今天来聊一聊阿里巴巴 Seata 新版本(1.5.1)是怎么解决 TCC 模式下的幂等、悬挂和空回滚问题的。 TCC 回顾 TCC 模式是最经典的分布式事务解决方案,它将分布式事务分为两个阶段来执行,try 阶段对每…

10分钟部署一个别人可以访问的在线网站(文末有礼

你是否幻想过拥有自己的个人网站?但是不会编程,没有任何网站搭建经验,搭建的时候也不知道怎么去选择系统…… 等等这一系列疑惑让大部分人还没开始就选择放弃,本期教大家用一个最简单的方式,在10分钟内搭建一个线上的…

菜鸟 CPaaS 平台微服务治理实践

背景 CPaaS(cainiao platform as a service)是以公有云为基座,结合先进的云原生理建设的企业级 DevOps 的 PaaS 平台,CPaaS 主要目前主要支持的场景:菜鸟生态的云上研发运维、菜鸟公有云 SaaS 化的能力透出、菜鸟商业…

RocketMQ 消息集成:多类型业务消息-普通消息

引言 Apache RocketMQ 诞生至今,历经十余年大规模业务稳定性打磨,服务了 100% 阿里集团内部业务以及阿里云数以万计的企业客户。作为金融级可靠的业务消息方案,RocketMQ 从创建之初就一直专注于业务集成领域的异步通信能力构建。本篇将从业务…

【总结】字符串匹配: KMP 和 拓展KMP

比起ac自动机,kmp就一个next数组,理解了如何初始化next后就可以搞一些模板题了,下面是还不错的学习资料,清晰易懂,自己用的模板也来自它: http://chaoswork.com/blog/2011/06/14/kmp%E7%AE%97%E6%B3%95%E5%B0%8F%E7%BB%93/ kmp模板 next[0]-1;j-1; for(i0;i<m;) {while(j>…

最小生成树(普利姆算法、克鲁斯卡尔算法)

给定一个带权的无向连通图,如何选取一棵生成树,使树上所有边上权的总和为最小,这叫最小生成树. 求最小生成树的算法 (1) 克鲁斯卡尔算法 图的存贮结构采用边集数组,且权值相等的边在数组中排列次序可以是任意的.该方法对于边相对比较多的不是很实用,浪费时间. (2) 普里姆算法 图…