解析Xconsole:阿里云控制台背后的管控类产品设计解决方案

Xconsole管控类产品设计云控制台 本内容遵循CC 4.0 BY-SA版权协议
蝶恋花未恋 蝶恋花未恋 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要

很多每天在阿里云控制台里开 ECS、配 SLB、折腾 OSS 的开发者,可能都不会特意去思考一个问题:为什么这套看起来元素繁多的界面,你用起来并不觉得乱?左侧的导航那么长,右侧的表格列那么多,弹窗、抽屉、引导页层出不穷,但你依然能很快找到“创建实例”“续费”“变更配置”。这不是偶然,背后是一整套被称为 Xconsole 的管控类产品设计解决方案在支撑。这篇文章我想把它拆开聊聊——它到底解决什么问题,怎么落地的,以及我们在自己产品里能借鉴什么。

先说清楚一点:Xconsole 不是某个普通的后台管理模板,它是从阿里云自己的控制台体系里长出来的一套面向“管控类产品”的设计与研发协作方案。所谓管控类产品,核心场景就是你购买、配置、管理云资源的那类界面。它和普通的企业后台、中后台管理系统的最大区别在于:信息密度极高、操作链路极长、用户角色极复杂、对实时状态和安全性的要求极高。你在一个控制台里看到的表格,可能承载了几十个字段;你执行一次“重启实例”,背后对应的是分布式系统里一串有状态变更的异步流程。这种产品形态,用常规的组件库拼凑是拼不出好体验的。

这篇文章适合谁看?两类人:一类是做云产品、SaaS 产品、DevOps 平台的设计师和前端工程师,你们每天都在跟“管控”打交道,Xconsole 的思路可以直接抄作业;另一类是想弄明白“为什么阿里云控制台这么设计的”的产品经理和开发者,理解了这套逻辑,你以后画原型、写前端会少踩很多坑。

1. 管控类产品的本质与Xconsole的定位

1.1 为什么说管控类产品是“最难的界面设计”之一

很多人觉得做后台界面简单,无非就是表格加表单。实际上后台和后台的差距,比前台和后台的差距还大。普通的内容管理后台,你面对的用户是内部运营,数据量有限,权限模型简单,页面坏一点、流程别扭一点,用户忍忍就过去了。但管控类产品面对的是外部客户,而且是花了钱的客户,客户操作系统时每一步都可能关系到生产环境的数据和业务。你创建一个 Redis 实例,选错规格可能直接影响线上缓存容量;你给某台服务器做“停机迁移”,这条操作路径里的任何一个提示不到位,客户的生产业务就可能出问题。

管控类产品的核心特征可以用三个“高”来概括:高复杂度、高实时性、高不可逆风险。

高复杂度体现在资源模型上。一台云服务器不只是一个“服务器”,它有实例规格、镜像、安全组、弹性公网IP、云盘、快照、监控告警、标签等一堆关联资源。控制台要把这些关系在一个页面里讲清楚,同时还要让用户能高效地完成“查找—定位—操作—确认—观察结果”这条完整链路。高实时性是指资源状态随时在变:创建中、启动中、运行中、异常、已释放,每一个异步操作都会引发状态流转,界面必须把这些流转直观地反馈出来。高不可逆风险就更不用说了,释放实例、退订资源、重置密码,任何一个动作都带有破坏性,设计上既要让用户敢于操作,又要防止用户误操作。

这三点叠加在一起,决定了管控类产品绝对不是一个“组件堆砌”的任务。它需要一套自上而下的设计方法论,从信息架构、页面框架、交互模式到状态反馈都要有统一的解决方案。Xconsole 正是在这个背景下出现的。

1.2 Xconsole到底是什么:不是组件库,是设计解决方案

我第一次听说 Xconsole 的时候,以为它就是个阿里云内部的组件库,类似 Ant Design 那种东西。后来深入了解才发现,组件库只是它最表层的一层。准确地说,Xconsole 是一套“管控类产品设计解决方案”,它由三部分构成:设计规范、组件体系、研发框架。

设计规范解决的是“为什么这么设计”的问题。比如控制台左侧的导航应该用几级、什么时候用平铺什么时候用折叠、表格里哪些操作应该放入“更多”下拉菜单、高风险操作必须用什么样的确认交互,这些都有明确的规则参考。组件体系解决的是“用什么搭”的问题,像实例列表页、实例详情页、创建流程页、配置向导页,这些高频页面都有沉淀好的组件和模板方案。研发框架解决的是“怎么落地”的问题,让前端工程师可以把设计规范里的要求直接转化为可运行的代码,而不是设计稿交付之后开发自由发挥。

这三层是嵌套关系:规范指导设计,设计沉淀为组件,组件封装进研发框架。这也是 Xconsole 和普通开源组件库最大的不同。一般组件库告诉你“有按钮、有表格、有弹窗,你用吧”,至于按钮放哪里、表格有哪些列、弹窗里的文案怎么写,它不管。但 Xconsole 把这些也管了,因为它沉淀的是阿里云几十条产品线、上千个控制台页面的实战经验。

1.3 一个从实践中长出来的方案,而不是造出来的概念

这里想强调一个容易被忽略的事实:Xconsole 是从阿里云自身的控制台实践中长出来的。它不是在实验室里拍脑袋设计出来的框架,而是经历了阿里云众多产品线的控制台设计、开发、上线、迭代后,把共性抽出来再返哺给各个产品线的一套方法和工具。

这带来一个直接结果:Xconsole 里沉淀下来的每一项规范,几乎都有真实的用户行为数据支撑。为什么要限制表格里操作按钮的密度?因为通过埋点数据显示,操作按钮过多时用户的完成率会下降。为什么要统一“创建资源”的步骤条结构?因为用户在一个产品里学会了创建流程,到了另一个产品就不用重新学习。这些经验对普通团队来说,是你花两三年时间运营一个后台产品才能慢慢积累到的东西。对中小团队而言,直接参考 Xconsole 的思路,等于站在别人的实践基础上起步,可以少走很多弯路。

2. Xconsole的核心设计思路与关键解法

2.1 页面骨架:先定框架,再谈细节

管控类产品页面五花八门,但拆开看无非是几种固定形态的组合。Xconsole 在这个过程中把页面骨架做了清晰的分类,最典型的是列表页、详情页、操作表单页和流程引导页,每一类都有明确的设计要点。

列表页是整个控制台里出现频率最高、设计难度最大的页面。它的核心使命是帮用户在海量资源中快速定位目标,然后进行批量或单条操作。Xconsole 对列表页的规范非常细致:搜索区通常放在页面顶部,筛选条件要支持标签化展示;主表格区默认展示的列数要控制在合理范围内,次要字段要允许用户自定义列;操作列的按钮密度必须受限,高频操作直接展示,低频操作收进“更多”下拉。这套规则的背后逻辑是有限的注意力分配——用户进入列表页的第一诉求是“找到想要的资源”,而不是被一堆操作按钮干扰。

详情页的核心逻辑是“从概览到深入”。页面顶部是资源的概要信息,比如服务器的规格、IP、区域、状态,紧接着是监控图表,再往下才是各种详情配置页签。这种从上到下、从粗到细的布局,让用户能逐层了解一个资源的全貌,而不至于陷进细节里出不来。对象存储控制台的 Bucket 概览页基本就是这个范式:一眼看到用量数据、访问域名,再看报表,再进到具体的权限配置。

操作表单页和流程引导页则强调“任务聚焦”。创建一台 ECS 实例涉及到地域、镜像、规格、网络、安全组、存储、带宽等几十个配置项,如果不做引导,用户第一步就会懵。Xconsole 的做法是把创建流程拆成步骤条,按“基础配置—网络配置—系统配置—确认订单”的顺序逐层推进,同时把敏感配置项(比如密码、密钥)单独拎出来强调。这其实是将复杂任务分解成多个简单任务的典型设计手法。

2.2 表格与表单:管控类产品的“水电煤”

表格和表单是管控类产品里使用频率最高的两种元素,它们的质量直接决定了用户对整套系统的印象。Xconsole 在表格设计上有一个值得详细说的原则:表格不只是用来展示,更是用来操作的。

当一个表格承载了几十个字段时,全列展示一定是一场灾难。Xconsole 的解法是让表格支持“密度切换”和“自定义列”,同时用清晰的层级组织信息。比如在 ECS 实例列表中,实例名称和 ID 作为第一优先级展示,配置、IP、付费方式等作为第二优先级,而一些不常用但必须存在的字段就默认隐藏,用户可以通过“自定义列”把它调出来。表格行的操作按钮也有优先级:重启、停止这样的高频操作直接外露,而修改属性、加入标签这种低频操作放进“更多”菜单。如果你在控制台里点过这些按钮,会发现几乎所有产品遵循同样的规律,这正是 Xconsole 统一设计的结果。

表单设计的核心则在于“减少用户的认知负担”。一个创建资源的表单往往有几十个字段,如果只是把所有输入项平铺出来,用户的完成率和准确率都会下降。Xconsole 里有一套“默认值优先”的思路:尽量通过默认选择减少用户操作,比如地域默认选择“华东1(杭州)”、规格默认推荐“通用型”。对于必须由用户选择的项,要给出清晰的选项说明和预估费用,让用户对“选这个会怎样”有明确预期。还有一个容易忽略的细节:对于高危操作的表单,比如释放实例、变更配置,必须让用户输入指定确认信息或者二次弹窗。这类设计不是为了增加步骤,而是给“误操作”加一道保险。

2.3 状态与反馈:管控类产品体验的下限

如果说表格和表单决定了一个管理控制台“好不好用”,那么状态与反馈设计就决定了用户“敢不敢用”。云产品的操作大多是异步的,用户点了“创建实例”按钮,真正的资源创建过程可能在几秒钟到几分钟不等。这个过程里如果界面没有明确的反馈,用户会怀疑操作是否成功,进而重复提交,结果就是创建出一堆重复资源。

Xconsole 在状态与反馈上有一套很成熟的做法。第一步是即时反馈,用户点击操作按钮后,界面必须在毫秒级给出“请求已提交”的确认,同时高亮展示被操作的资源。第二步是过程反馈,对于长时间运行的操作,要么在列表页显示“创建中”的旋转状态,要么通过消息中心、通知栏告知用户进度。第三步是结果反馈,操作完成后要明确提示成功或失败,失败时还要给出失败原因和下一步建议。你可能觉得这些都是基础功能,但在真实产品里,很多管理后台连“操作成功”后的资源状态刷新都做不好,用户只能手动刷新页面去确认。

另外,Xconsole 特别强调“区块化”的状态展示。比如一个实例的详情页,顶部有状态标签(运行中、已停止、异常),紧接着是对应状态下可以执行的操作集合。反过来,如果一个实例处于异常状态,页面上就会突出显示异常原因和处理建议,而不是让用户在茫茫的表单里自己找答案。这种围绕状态做设计的方式,是管控类产品区别于普通后台的又一个关键点。

3. 实操落地:从零搭建一个管控台时应该怎么做

3.1 用Xconsole把页面“拼”出来

如果你所在团队已经引入了 Xconsole 相关的组件和模板,那么落地一套控制台前端其实是比较高效的过程。以列表页为例,第一步是确定资源类型和字段清单,然后从组件库里找到对应的“通用列表页”模板,通过配置替换资源列名和操作项,基本一两小时内就能出来一个可交互的页面雏形。这和我早年画后台页面完全不同,那时候是设计师出完稿、前端照着稿子手工切图改样式,效率低且容易走样。

不过,如果你想在自己的项目里参考 Xconsole 的思路,而不是直接引入方案本身,我建议按这样的步骤来:

  • 想清楚你产品的“资源模型”。列出所有需要管理的资源类型,画出它们之间的关联关系,这是信息架构的基础。
  • 用统一布局框架搭页面骨架。把列表页、详情页、表单页、引导页的结构先固定下来,让所有页面在框架层保持一致,之后再填充业务内容。
  • 定义状态规范。梳理所有资源的状态集合(创建中、运行中、异常、已删除等),以及每个状态对应的可操作项和提示文案。
  • 再开发组件。先画全页面类型,再从页面里抽组件,不要一上来就抽组件再拼页面,本末倒置。

我自己在实际项目中踩过的最大教训是:过早追求组件的通用性,会导致页面拼装时被组件束缚,很多业务细节无法表达。正确做法是先有页面,再有组件,组件是为了复现页面而存在的。Xconsole 的成熟之处就在于它已经把这条路走通了,所以我们才看到那么多形态相似但又不完全雷同的控制台页面,既统一又不死板。

3.2 权限、路由与多角色场景的接入

管控类产品几乎必然有多角色场景,这给前端带来的不只是“按钮显隐”这么简单。同一个控制台页面,主账号看到的是全量资源和管理入口,子账号只能看到授权范围内的资源,而且操作权限也不同。Xconsole 在这个问题上提供了相对完整的模式参考,最常见的做法是“权限前置”。

权限前置的意思是,界面必须在渲染之前就知道当前用户的权限范围,然后直接渲染出对应的界面形态,而不是在界面渲染之后再通过一个个判断去隐藏按钮或区块。这样做有两个好处:一是避免权限信息闪屏泄露,二是减少前端代码的分支复杂度。实现上,一般是在路由级别做权限拦截,进入某个页面时通过接口或本地权限数据判断用户是否有查看权限,无权限则直接展示无权限页或跳转。

菜单和操作按钮的处理也值得单独说。左侧导航菜单要按用户权限动态生成:没有某个产品权限的用户,就不应该看到这个产品的入口。操作层面的权限则要细化到“创建”“修改”“释放”等动作级别,按钮级控制要跟后端接口的权限校验保持一致。很多人觉得控制台里“权限不够”的提示很烦,但从安全角度讲,它恰恰是必要的兜底。Xconsole 的做法是通过清晰的角色说明和权限说明,让用户提前知道自己的权限边界,减少操作到一半才发现没权限的挫败感。

3.3 主题定制与多品牌适配

Xconsole 还有一个很实用的能力是主题定制。阿里云控制台本身在不同国际站、专有云版本之间,视觉细节是有差异的;而每个使用 Xconsole 的产品线,又可以在基础框架上叠加自己品牌色的变体。这背后是一套设计变量(Design Token)机制在起作用,颜色、圆角、字号、间距、暗黑模式下的对应值,全部抽成可配置的变量,而不是写死在样式文件里。

对普通团队来说,这个思路非常值得借鉴。即使你没有完整的组件库,只要把品牌色、状态色、成功/警告/错误的色板、主要字体、圆角规范这些基础变量先统一抽出来,你的产品就已经有了主题定制的基础。后续不管是换品牌还是适配暗黑模式,都会轻松很多。我见过不少团队的代码里,同一个“成功绿”在不同页面有三个色值,就是因为他们没有抽设计变量,每次都是手填颜色,最后视觉一致性很难保证。

如果团队打算做暗黑模式,我的建议是尽早把设计变量体系搭好,而不是等暗黑模式需求来了再动手。临时做的暗黑模式往往只是把背景色换成深色,很多层级关系在新的背景下全乱了,用户体验很糟糕。

3.4 表格性能与大数据量展示的工程化处理

管控类产品的表格可能面对几万甚至几十万条数据,直接全量渲染必然会卡死浏览器。Xconsole 在工程化层面的处理思路是“服务端分页 + 按需加载”,前端只渲染当前页的数据,同时配合筛选条件和搜索关键字来减少总数据量。这个方案对管控类产品来说是最实用的,不建议在前端做大数据量虚拟滚动,因为服务端分页配合后端搜索、筛选更符合资源管理的真实使用逻辑。

这里还有一个容易忽略的细节:列表页的筛选条件需要和 URL 参数同步。什么意思?就是用户勾选了某个地域、选择了某种状态之后,刷新页面时这些筛选条件应该保留,而不是重置。这看起来是小事,但对管控类产品来说是刚需。用户可能正在排查一组特定状态的实例,结果刷新一下筛选条件全没了,还得重新设置一遍,非常恼火。Xconsole 的页面里选择条件后通过 URL 参数保持状态,这个细节很多后台系统都没做到。

4. 常见问题与避坑经验:我在实践中踩过的坑

4.1 表格的列越来越多,页面越来越臃肿

几乎每一个做管控产品的团队都会遇到这个问题:业务方今天加一个字段,明天加一个字段,表格的列越来越多,最后页面横向滚动条长得像一条跑道,用户根本不知道重点在哪。Xconsole 的解法是给表格列做“分级管理”,核心列常驻,辅助列默认隐藏且支持“自定义列”让用户自行选择。

我在实践里发现,有个更底层的心态要调整:不要追求一个表格展示所有数据,而要让用户“按需取用”。如果某个字段的使用频率低于 20%,就默认隐藏;如果某个字段根本不需要在列表页展示,只放在详情页就够了。做产品的人经常怕漏信息而把所有字段塞进表格,结果适得其反。而且,列多了以后操作按钮的位置会被挤到很后面,用户每次都要横向滚动才能点按钮,这种体验基本就是灾难。

另一个相关问题是:表格里的状态列表达不一致。有的状态用文本,有的用圆点加文本,有的用徽标,混乱不清。建议一个产品里状态列的表达方式统一,并且状态颜色要符合通用的视觉语义:绿色代表正常、黄色代表警告、红色代表异常、灰色代表停止或已释放。这个颜色规范跟前面说的设计变量要密切配合,不要一个团队里各写各的。

4.2 异步操作的状态反馈做不好,用户被“蒙在鼓里”

在前面的内容里我反复强调状态反馈,这里补充一个常见的反面案例。有些后台产品在做“创建资源”时,点击按钮后页面就停在原地,既不跳转也不提示,过了几秒弹一个“创建成功”,用户在这个过程中完全没有掌控感。如果是耗时较长的创建任务,用户很可能在等待时又点了一次按钮,结果创建出多个实例。

针对这类问题,有三个可以立刻落地的改进策略:第一,提交操作后立即禁用按钮并显示“提交中”,从源头防止重复提交;第二,如果是耗时操作,提交后应跳转到资源列表页,并将新建资源的行高亮,显示“创建中”状态;第三,如果资源创建需要几分钟甚至更久,应引导用户可以先去做其他事情,等创建完成后通过消息通知提醒。这些策略并不是什么高深的技术,但确实很多团队没有做到,导致用户对产品的信任度下降。

在做这些设计时,还有一点需要特别注意:产品文案。同样一个操作,在 Xconsole 规范里对成功、失败、超时、部分成功等不同场景都有对应的文案模板。好的反馈文案应该告诉用户“发生了什么—影响是什么—接下来该做什么”,而不是只有冷冰冰的“处理失败”。比如实例启动失败,提示应该是“实例启动失败,原因为当前可用区资源不足,请更换可用区后重试”,而不是“操作失败”。

4.3 权限逻辑混乱,页面出现“幽灵按钮”

权限是管控类产品里最容易出 bug 的部分,最常见的症状是用户明明没有权限,页面上却显示了这个按钮,点下去才提示“无权限”。这种体验非常差,相当于让用户对着一个锁上的门反复撞。Xconsole 的做法是“前端权限拦截 + 后端权限校验”双保险,前端根据权限数据控制按钮显隐,不让用户点到无权操作的入口;后端在接口层继续做权限校验,防止越权操作。前端拦截是体验问题,后端校验是安全问题,两者不能互相替代。

还有一类“幽灵按钮”是因为权限数据没有动态刷新。用户业务调整后,权限增加了,但前端还是按旧的权限数据渲染,用户刷新缓存才能看到新入口。这个问题在自建后台里很常见。我的经验是:权限数据在用户登录时获取一次,同时提供一个刷新角色权限的入口;涉及高权限操作时,要实时校验,而不是过度依赖缓存。

4.4 页面状态过多,测试覆盖跟不上

管控类产品页面的状态组合非常多,一个实例列表页,可能有十几列、每列又有多种取值,再加上不同权限角色看到的页面形态不一样,测试很难全部覆盖。这也是很多后台产品“看着简单,改起来很痛”的原因。我经常看到开发改了一个公共组件,结果影响了所有使用该组件的页面,线上出问题才发现。

对这个问题,我的建议是:组件级的改动要尽量向后兼容,新增参数必须有默认值;同时要在团队里建立“页面基础场景清单”,把最高频的几条路径固定下来,每次发版前先跑一遍基础路径回归。举个例子,ECS 控制台最核心的路径就是“登录—筛选实例—进入详情—重启实例—观察状态变化”,如果你的改动让这条链路走不通,基本就可以直接撤回版本了。

5. 对团队落地Xconsole思路的几点建议

5.1 设计、前端、产品三方共建,而不是几个人的自嗨

很多人以为管控类产品的设计方案是设计团队的事,实际执行起来才发现这事离了谁都不行。如果产品经理不理解页面骨架和状态设计的意义,需求文档里就不会预留这方面的信息,设计稿自然很难落地;如果前端不理解设计规范背后的意图,遇到展示不完的表格第一反应就是自己加滚动条,而不是去思考信息架构是不是出了问题。

我自己比较推荐的做法是:在设计方案启动阶段,就把产品、设计、前端拉在一起,先用一份“页面地图”把所有要做的页面类型梳理出来,再统一确定骨架和状态规则。这个过程有点像施工前先统一标高等基准——基准定了,后面各干各的也不会跑偏。如果一开始就是各画各的、各写各的,后面必然要花更多时间在互相对齐和返工上。

5.2 从小处入手,渐进式统一

如果你的团队已经有一堆线上在跑的后台系统,你别指望一个“大干一场”的项目能把它们全部统一起来。我的建议是先拿一个使用频率最高、业务边界最清晰的系统做试点,完全按 Xconsole 的思路搭出页面骨架和核心组件,然后把工程化的基础设施(菜单、路由、权限、设计变量)沉淀好,再逐步扩展。

渐进式统一还有一个好处:可以边做边验证。你不需要等全部页面改造完,就能从试点的页面上看到数据,比如操作耗时是否下降、用户对反馈的满意度是否上升。带着数据去推广,后续的部门和团队才愿意跟着你一起改。靠行政命令压着大家改框架,通常效果都不好。

5.3 别把“组件”本身当成万能药

文章写到这里,想再强调一下开头提过的那个观点:Xconsole 的价值不在组件本身,而在组件的设计依据和组合方式。如果你只是从某个开源组件库拿一套表格、一套表单,但你根本不知道表格里该放哪些列、操作按钮该怎么分组、状态反馈该怎么表达,那它对你的帮助非常有限。反过来,如果你先把规范想清楚了,组件是不是一定要用 Xconsole 的反而没那么重要。

我见过一些人把 Ant Design 看作万能模板,只要页面用了 Ant Design 就觉得自己在做中台产品了,其实两者的区别很明显:组件库是乐高块,Xconsole 是乐高块的拼装说明书加建筑图纸。没有图纸你拼出来的东西虽然也能立住,但撑不起一个复杂的建筑。

结尾:说说我自己的感受

接触 Xconsole 这些年,我最大的体会是:真正成熟的解决方案不是把界面做得多“酷炫”,而是让用户在操作复杂系统时觉得“不费劲”。它把很多本来应该靠资深设计师经验才能把控的细节,沉淀成了团队里所有人都能理解、执行的规范和工具,大大降低了对个人经验的依赖。

如果你现在正准备做一个管理后台或者云资源控制台,我建议先别急着找组件库,而是花点时间像 Xconsole 这样,把自己的页面地图、资源模型、状态规则、权限边界理清楚。哪怕是先拿一支笔在白板上画框架图,也比直接开代码有价值。后面等你把页面真正搭出来、用户用起来,就会发现前期这些“想清楚”的功夫,全部值回了票价。

最后分享一个小技巧:把你产品里最高频的 10 条用户操作路径列出来,挨个走一遍,看看哪一步的反馈是缺失的、哪一步的按钮是多余的、哪一步的状态会让人迷茫。通常一轮走查下来,你会发现很多体验问题根本不需要换框架,调整文案和反馈逻辑就能改掉一大半。管控产品的体验提升,往往就是在这些细节里一点点抠出来的。

相关推荐

基于Python+Open CV的手势识别算法设计

伴随着人工智能时代的到来,人机交互的领域也逐渐成为研究的一大方向;其中,手势识别是人机交互领域的一项关键技术,自此手势识别也迎来了一波高潮,近几年无论是在消费领域、电子领域、数码领域、家电领域甚至汽车领域上,都能或多或少的见到手势识别的身影。 手势识别在设计智能高效的人机界面方面具有至关重要的作用, 目前手势识别已应用到手语识别、智能监控、到虚拟现实等各个领域,手势识别的原理都是利用各种传感器(例如红外、摄像头等)对手部的形态进行捕捉并进行建模,形成一个模型信息的序列帧,而后将这些信息序列转换为机器能够识别的相对应指令(例如打开、切换菜单、移动等)来完成控制。 采用Python的集成开发环境Pycharm进行本次课程设计,在Pycharm中进行需要库(模块)的下载,调取电脑摄像头,按帧读取摄像头采集到的头像,形态学处理,图像旋转(由于摄像头采集到的图像是镜像,需要用cv2.flip将摄像头采集到的图像进行处理),选取图片中固定位置作为手势输入,用红线画出手势识别框,基于hsv的肤色检测,进行高斯滤波,找出轮廓,求出图像中手势的凹凸点,手指间角度求取。

努力学习前端的小陈

ROS-CV-ImageConverter:将ROS图像转换为OpenCV(cv :: Mat)类型的图像

ROS-CV图像转换器 依存关系 cv_bridge(ROS软件包)

Willis Wang

计算机视觉图像处理-CV2与图像插值算法

用最近邻插值与双线性插值原理完成图像缩放 最近邻插值,是指将目标图像中的点,对应到源图像中后,找到最相邻的整数点,作为插值后的输。缺点:使用最近邻插值算法处理图像放大时,在图象中可能出现明显的块状效应 双线性插值,在两个方向上做三次线性插值。使用双线性插值算法处理图像放大时,在图象中可能出现马赛克 代码 import cv2 img = cv2.imread(’./xiabang.jpg’, cv2.IMREAD_UNCHANGED) #缩放比例 scale_percent = 0.3 width = int(img.shape[1] * scale_percent) height = int

weixin_38697274

基于水平集CV模型的图像分割(Matlab代码)

基于水平集CV模型的图像分割(Matlab代码),全套代码

小宇QAQ

导向滤波(guide_filter)的python实现

导向滤波(guide_filter)的python实现,可以结合暗通道;理论实现比较好的图像去噪效果。

zachzhan_g
返回顶部
蝶恋花未恋
博客等级 码龄7年 48粉丝 5,341原创