【构建CV图像识别系统】从传统方法到深度学习
目录
- 1. 图像的基本概念
- 1.1 像素与色彩
- 1.2 过滤与卷积
- 2. 图像分类与检测
- 3. 图像特征的提取
- 3.1 全局特征
- 3.2 局部特征
- 3.2.1 边缘(Edge)
- 3.2.2 角点(Corner)
- 3.2.3 SIFT 特征
- 4. 传统方法与深度学习在图像识别中的应用
- 4.1 基于传统方法的图像识别
- 4.2 基于深度学习的图像识别:卷积神经网络(CNN)
- 5. 构建图像识别系统的流程
- 6. 总结与展望
图像识别系统已经成为人工智能的重要应用之一,无论是在安防监控、自动驾驶还是医疗影像分析中,都发挥着关键作用。本文将带你从图像处理的基本概念开始,逐步了解传统的图像特征提取方法,再到如何利用深度学习实现端到端的图像识别。
1. 图像的基本概念
1.1 像素与色彩
- 像素:图像的最基本单位,每个像素都具有亮度值。对于灰度图,亮度值通常在 0 0 0 到 255 255 255 之间;而对于彩色图像,则有红、绿、蓝(RGB)三个通道,每个通道也是 0 0 0 到 255 255 255 的数值。
1.2 过滤与卷积
-
过滤:在图像处理中,过滤常用于去除噪声或突出图像的某些特征。例如,移动均值滤波就是对图像上邻近像素取平均值,以平滑图像。
-
填充:当对图像边缘进行滤波时,为了避免边界效应,通常需要对图像边缘进行填充。常见的填充方式有0填充(在边缘填入零值)和最近填充(用最近的像素值进行填充),其中0填充应用最为广泛。
-
卷积:卷积的核心思想是用一个小的滤波器(或者叫核)在图像上滑动,每一步将滤波器与图像对应区域的像素做乘积并求和,从而得到一个新的像素值。卷积公式一般写为:
( f ∗ g ) ( x , y ) = ∑ i ∑ j f ( i , j ) ⋅ g ( x − i , y − j ) (f * g)(x,y) = \sum_{i}\sum_{j} f(i,j) \cdot g(x-i,y-j) (f∗g)(x,y)=i∑j∑f(i,j)⋅g(x−i,y−j)
这里, g g g 是滤波器,其中“翻转”操作( g ( x − i , y − j ) g(x-i,y-j) g(x−i,y−j))确保了滤波器正确对齐图像数据。因为图像数据是离散的,所以积分换成了求和。可以把卷积看作一种“累积系统存量”的操作,它既能实现平滑、边缘检测等功能,也构成了深度学习中卷积神经网络的基础。
2. 图像分类与检测
图像识别任务大体可以分为两类:
-
图像分类:主要任务是判断图像中是否存在某种物体(例如,有无猫)。整个图像会被看作一个整体,通过提取全局特征后输入到分类器(如支持向量机、决策树等传统模型)中进行判断。
-
图像检测:不仅需要判断图像中存在目标,还要确定目标的位置。常用的方法是先提取图像特征,然后通过对像素或区域进行聚类,识别出物体的边界和位置。
3. 图像特征的提取
图像特征大致分为两类:全局特征和局部特征。
3.1 全局特征
- 亮度直方图:统计图像中各个灰度值的像素数量,反映了图像整体的亮度分布情况。整个图像只有一个直方图,因此它是全局的描述。
3.2 局部特征
局部特征主要描述图像中局部区域的重要信息,常见的有边缘、角点以及 SIFT(尺度不变特征变换)关键点。
3.2.1 边缘(Edge)
边缘是图像中灰度变化剧烈的地方。Canny 边缘检测算法是一种经典方法,其流程大致为:
-
高斯滤波降噪:由于图像存在噪声,Canny 算法首先利用高斯滤波对图像进行平滑。高斯模糊可以理解为用一个“模糊窗口”对图像做卷积运算,从而减弱噪声的影响,使得后续的边缘检测更稳定。
-
梯度计算:对平滑后的图像计算一阶导数(梯度),找出灰度变化最大的区域。
-
非极大值抑制与双阈值检测:最后通过一系列步骤确定边缘的位置。
通俗来讲,高斯滤波就像是在图像上盖上一层柔软的“滤网”,把那些微小的噪点“模糊”掉,使真正的边缘更加明显。
3.2.2 角点(Corner)
角点是图像中两个边缘交汇的地方,具有旋转不变性和平移不变性,但不一定具备尺度不变性。常见的 Harris 角点检测方法使用图像在 x x x 轴和 y y y 轴的导数构造一个矩阵,再通过特征值分解来判断局部区域内的变化情况。简单来说:
-
想象你在观察一个图像区域,当你移动视角时,如果该区域的亮度变化在所有方向上都很明显,那么这个点就是一个角点。
-
数学上,通过计算一个小区域内梯度的分布情况,可以用特征值来度量不同方向上的变化,两个较大的特征值通常表明该区域存在角点。
3.2.3 SIFT 特征
SIFT(尺度不变特征变换)算法能生成满足旋转、平移和尺度不变性的关键点:
-
多尺度高斯模糊:利用不同标准差的高斯滤波,生成一系列不同尺度的图像。
-
关键点检测:在这些尺度空间中寻找局部极值点,确定图像中最稳定的特征位置。
-
方向确定与描述:在每个关键点周围计算梯度方向,选出变化最显著的方向作为关键点的主方向;同时,记录周围的梯度信息作为关键点描述,方便后续图像匹配与相似度计算(例如通过欧氏距离来比较描述子的相似性)。
4. 传统方法与深度学习在图像识别中的应用
4.1 基于传统方法的图像识别
传统方法通常采用先提取图像特征,再使用经典机器学习模型进行分类或检测。例如,利用亮度直方图、边缘和角点等特征输入到支持向量机或决策树模型中。这种方法的优点在于理解过程明确、计算量较低;但缺点是需要设计和调试大量特征提取算法,且在复杂场景下容易受到干扰。
4.2 基于深度学习的图像识别:卷积神经网络(CNN)
近年来,卷积神经网络(CNN)的出现彻底改变了图像识别领域。CNN 可以实现端到端的学习,即直接从原始图像输入到输出结果,无需人工设计特征提取模块。
-
卷积层:自动学习图像的局部特征,能够识别边缘、角点等低级特征,并逐渐组合成高级语义信息。
-
池化层:用于对卷积层输出的特征进行降采样,压缩信息量的同时保留最重要的特征。常见的有最大池化和平均池化。
这种端到端的方法大大降低了人工干预的需求,并在许多实际应用中取得了比传统方法更优异的表现。
5. 构建图像识别系统的流程
无论采用传统方法还是深度学习方法,构建一个图像识别系统的基本流程大致如下:
- 数据准备与预处理
- 收集足够的图像数据,并对图像进行归一化、尺寸调整、去噪等预处理操作。
- 特征提取
-
传统方法:利用滤波、卷积等技术提取图像的全局和局部特征。
-
深度学习:直接输入预处理后的图像,让 CNN 自动学习特征。
- 模型设计与训练
-
传统方法:选择合适的分类器(如 SVM、KNN 等)并进行训练。
-
深度学习:设计合适的 CNN 架构,通过大量数据训练模型参数。
- 模型评估与调优
- 使用验证集评估模型性能,通过交叉验证、超参数调优等方法不断改进模型效果。
- 部署与应用
- 将训练好的模型部署到实际系统中,结合前端界面、服务器等实现实时图像识别应用。
6. 总结与展望
从像素、过滤、卷积,到传统的边缘检测、角点检测,再到基于深度学习的 CNN,图像识别系统经历了从手工设计特征到自动特征学习的巨大转变。虽然传统方法在理解上更直观,但深度学习凭借其强大的端到端特性,已成为当前图像识别领域的主流技术。未来,随着计算能力和数据量的不断提升,我们有理由相信图像识别技术将在更多领域实现突破,并推动智能系统的发展。
通过对基本概念和关键技术的深入理解,我们不仅能更好地构建图像识别系统,还能为解决更复杂的视觉任务打下坚实基础。
这篇博客旨在帮助读者理解图像识别系统背后的基本原理,并提供一个由传统方法到深度学习技术的全景视角。希望对你的学习和实践有所启发!
相关文章:
【构建CV图像识别系统】从传统方法到深度学习
目录 1. 图像的基本概念1.1 像素与色彩1.2 过滤与卷积 2. 图像分类与检测3. 图像特征的提取3.1 全局特征3.2 局部特征3.2.1 边缘(Edge)3.2.2 角点(Corner)3.2.3 SIFT 特征 4. 传统方法与深度学习在图像识别中的应用4.1 基于传统方…...
在Centos 7环境下安装MySQL
前言:在安装与卸载MySQL时,用户需切换为root,这样安装之后,普通用户也能够使用。 Tips:我们在刚开始学习时,尽量全部使用root进行,适应mysql语句,后面学了用户管理,就可以考虑新建普…...
【机器学习基础 4】 Pandas库
一、Pandas库简介 Pandas 是一个开源的 Python 数据分析库,主要用于数据清洗、处理、探索与分析。其核心数据结构是 Series(一维数据)和 DataFrame(二维表格数据),可以让我们高效地操作结构化数据。Pandas …...
干部监督预警系统的定义与功能
一、干部监督预警系统是什么? 干部监督预警系统是通过整合多源数据(如干部档案、履职表现、廉政记录、舆情反馈等),利用大数据分析、人工智能等技术,对干部行为进行实时监测、风险评估和分级预警的数字化管理工具。 二…...
可视化图解算法:链表的奇偶重排(排序链表)
1. 题目 描述 给定一个单链表,请设定一个函数,将链表的奇数位节点和偶数位节点分别放在一起,重排后输出。 注意是节点的编号而非节点的数值。 数据范围:节点数量满足 0≤n≤105,节点中的值都满足 0≤val≤10000 要…...
获取小红书笔记详情接口的详细指南
一、引言 小红书作为一个集社交、购物、分享于一体的综合性平台,拥有海量的用户和丰富的笔记内容。小红书笔记详情API接口为开发者提供了一种高效获取笔记详细信息的方法,包括笔记的标题、正文、图片、视频、标签、点赞数、评论数等。这些数据可以帮助开…...
麒麟系统运维指令
麒麟系统运维指令 麒麟系统运维指令1、 查看系统版本2、查看系统信息3、用户与权限管理4. 网络相关命令5. 包管理6. 文件操作7. 进程管理 麒麟系统运维指令 1、 查看系统版本 目的指令查看操作系统版本信息cat /etc/os-release查看操作系统版本信息hostnamectl查看内核版本un…...
pyqt SQL Server 数据库查询
一、概述 本项目旨在开发一个基于 Python 和 PyQt6 的数据库查询工具,该工具能够连接到 SQL Server 数据库,显示数据库中的表名,支持用户输入 SQL 查询语句进行数据查询,并将查询结果展示在表格中。同时,为了提升用户…...
抓包软件【Fiddler】
我叫补三补四,很高兴见到大家,欢迎一起学习交流和进步 今天来讲一讲Fiddler 什么是Fidder Fiddler是一款非常流行并且实用的HTTP抓包工具,原理是在电脑上开启一个HTTP代理服务器,然后转发所有的HTTP请求和响应。是用C#开发的工具…...
SpringCould微服务架构之Docker(1)
项目中微服务比较多的时候,一个一个手动的部署太麻烦了,所以就需要用到Docker。 项目部署中的问题: Docker是一种快速交付应用、运行应用的技术。...
计算图(Computation Graph)
在强化学习中,TensorFlow的计算图(Computation Graph)是用于描述模型结构和训练流程的核心机制。 1. 计算图的基本概念 定义:计算图是TensorFlow中表示数学运算和数据流动的有向图。图中的节点(Nodes)代表…...
邮件营销:如何设置合适的发送频率
在邮件营销里,把握好发送频率特别关键,这直接关系到客户愿不愿意搭理你的邮件,以及邮件营销能不能达到预期效果。下面这几个步骤和建议,能帮你找到合适的邮件发送频率: 一、了解目标受众 分析客户行为:查…...
React项目中,递归写法获取tree的id集合
后端接口返回一个childrens的树,最后要拿到的是每个childrens下第一个对象的id集合,用于编辑页的回显 采用的是递归写法!!!!!!!! const categoryIds: Array&…...
深入解析Linux网络、安全与容器技术
1. Netfilter:Linux内核的包处理框架 Netfilter 是Linux内核中用于控制网络数据包的核心机制,负责处理数据包的过滤、修改和转发。其核心功能包括: 包过滤(Packet Filtering):根据规则允许或拒绝数据包通过…...
AF3 Rotation 类解读
Rotation 类(rigid_utils 模块)是 AlphaFold3 中用于 3D旋转 的核心组件,支持两种旋转表示: 1️⃣ 旋转矩阵 (3x3) 2️⃣ 四元数 (quaternion, 4元向量) 👉 设计目标: 允许灵活选择 旋转矩阵 或 四元数 封装了常用的 旋转操作(组合、逆旋转、应用到点上等) 像 torch.…...
数据预处理习题
简述常用的文本数据类型。 结构化文本:如数据库中的表格数据、JSON/XML格式数据,具有明确的字段和层级关系。非结构化文本:如自然语言文本(新闻、社交媒体内容)、长文档(书籍、论文)࿰…...
常见框架漏洞—中间件IIS
一.IIS6.x篇 1.在Windows server 2003中搭建网站 2.访问网站,并对该网站进行抓包 3.修改提交方式为PUT,然后写入木马 4.修改提交方式为MOVE,令将其更名为脚本⽂档后缀 5.我们在Windows server 2003中可以看到我们上传的shell.asp 6.我们在网…...
群体智能优化算法-蚁狮优化算法(Ant Lion Optimizer, ALO,含Matlab源代码)
一、文章摘要 蚁狮优化算法(Ant Lion Optimizer,ALO)是一种新颖的元启发式算法,由Mirjalili提出,其灵感来源于自然界中蚁狮幼虫构筑陷阱捕猎蚂蚁的行为。该算法通过模拟蚂蚁的随机游走、蚁狮的陷阱机制、陷阱缩小及精…...
【计算机视觉】数据增强
一、数据增强的意义 在深度学习中,数据集往往有限,而模型需要大量的样本来学习特征。数据增强技术通过对图像进行如下变换: 扩充样本数量:利用已有数据生成新的样本。提高模型鲁棒性:使模型适应不同的图像变换&#…...
BERT文本分类实战----美团外卖评论情绪分类
HuggingFace 提供了巨大的模型库,虽然其中的很多模型性能表现出色,但这些模型往往是在广义的数据集上训练的,缺乏针对特定数据集的优化,所以在获得一个合适的模型之后,往往还要针对具体任务的特定数据集进行二次训练&a…...
Chrome 133 版本开发者工具(DevTools)更新内容
Chrome 133 版本开发者工具(DevTools)更新内容 一、持久化的 AI 聊天记录 AI 助手面板会在本地持久化聊天记录,即使重新加载 DevTools 或 Chrome,也可以查看之前与 Gemini 的对话内容。 二、Performance 面板改进 此版本为 Per…...
大模型应用(Java)2025/3/24
大佬视频👉使用Java实现一个基础的大模型RAG问答对话系统_哔哩哔哩_bilibili 需求 让大模型来理解知识库内容,并根据知识库回答。 通过本次应用我学到了: RAG工程的基本处理框架流程(基于java)向量数据库的基础使用…...
基于Sentinel-1A GRD洪涝淹没范围提取(SDWI阈值法和OSTU自动阈值法)
0 前言 两幅灾前和灾后的遥感影像经过SARscape配准、滤波、辐射定标预处理之后,使用GDAL库分别使用SDWI阈值法和OSTU自动阈值法提取洪涝淹没范围 1 ENVI 5.6和SARscape5.6安装 通过网盘分享的文件:ENVI5(1).6 链接: https://pan.baidu.com/s/1mKcEkC3…...
PPT 转高精度图片 API 接口
PPT 转高精度图片 API 接口 文件处理 / 图片处理,将 PPT 文件转换为图片序列。 1. 产品功能 支持将 PPT 文件转换为高质量图片序列;支持 .ppt 和 .pptx 格式;保持原始 PPT 的布局和样式;转换后的图片支持永久访问;全…...
IOS接入微信方法
导入SDK 和配置 SDK 的不做介绍; 1 在IOS 开发者中心 Identifiers 打开‘Associated Domains’ 2 建立一个文件(不带后缀的)apple-app-site-association, teamid在 IOS 开发者中心的会员找,appid在 xcode里面找 {"applin…...
隐式与显式等待的区别及混合使用
隐式等待(Implicit Wait)和显式等待(Explicit Wait)是 Selenium WebDriver 中两种不同的等待机制,用于处理动态加载的页面元素或异步操作。以下是它们的区别、作用范围以及混合使用的注意事项: 1. 核心区别…...
Selenium基本使用(三)隐藏框、获取文本、断言、切换窗口
1、定位文本框,密码框,按钮 案例一: 网站:过期更新 from selenium import webdriver import time dxwebdriver.Chrome() dx.get("过期更新") time.sleep(2) dx.find_element_by_name("userAccount").send_keys("…...
蓝桥杯,利用 Vue.js 构建简易任务管理器
在日常开发中,我们经常需要处理各种任务和计划。一个简单且高效的任务管理器可以帮助我们更好地组织和安排时间。今天,我将向大家展示如何使用 Vue.js 构建一个简易的任务管理器。这个项目不仅能够帮助我们更好地理解 Vue.js 的基本语法和功能࿰…...
vmwaretools解压失败|vmware tools distrib cannot mkdir read only file system|bug汇总
最简单的一条路线:你的解压命令用sudo了吗? 这个方法不能解决的话就看下面内容。本文提供给你全过程思路。 如需转载,标记出处 背景: 之前虚拟机和主机的复制黏贴还能用,今天突然用不了,重新下载安装包&am…...
类与对象(中)(详解)
【本节目标】 1. 类的6个默认成员函数 2. 构造函数 3. 析构函数 4. 拷贝构造函数 5. 赋值运算符重载 6. const成员函数 7. 取地址及const取地址操作符重载 1.类的6个默认成员函数 如果一个类中什么成员都没有,简称为空类。 空类中真的什么都没有吗&…...
2025-03-21 Unity 网络基础3——TCP网络通信准备知识
文章目录 1 IP/端口类1.1 IPAddress1.2 IPEndPoint 2 域名解析2.1 IPHostEntry2.2 Dns 3 序列化与反序列化3.1 序列化3.1.1 内置类型 -> 字节数组3.1.2 字符串 -> 字节数组3.1.3 类对象 -> 字节数组 3.2 反序列化3.2.1 字节数组 -> 内置类型3.2.2 字节数组 -> 字…...
练习8-8 移动字母
练习8-8 移动字母 day 8 void Shift( char s[] ){int lenstrlen(s);int a[3];for(int i0;i<3;i){a[i]s[i];}for(int i3;i<len;i){s[i-3]s[i];}s[len-3]a[0];s[len-2]a[1];s[len-1]a[2]; }...
BigEvent项目后端学习笔记(二)文章分类模块 | 文章分类增删改查全流程解析(含优化)
📖 模块概述 文章分类模块包括 新增文章分类、文章分类列表、获取文章分类详情、更新文章分类、删除文章分类 功能。本篇对于原项目进行了代码优化,将原先写在 Controller 层的业务逻辑代码迁移至了 Service 层。 🛠️ 技术实现要点 分组校…...
蓝桥杯,冬奥大抽奖
在日常的网页开发中,抽奖功能是一种常见的交互设计,它可以增加用户的参与感和趣味性。今天,我将分享一个简单的抽奖转盘实现,它使用了HTML、CSS和JavaScript,非常适合初学者学习和理解前端开发的基本概念。 一、项目背…...
scNET:整合scRNA-seq和PPI用于学习基因和细胞的embedding
scRNA-seq 技术的最新进展为深入了解各种组织的异质性提供了前所未有的视角。然而,仅靠基因表达数据往往无法捕捉和识别细胞通路和复合物的变化,因为这些变化在蛋白质水平上更容易被察觉。此外,由于scRNA-seq数据存在高噪声水平和零膨胀等固有…...
第四天 开始Unity Shader的学习之旅之Unity中的基础光照
Unity Shader的学习笔记 第四天 开始Unity Shader的学习之旅之Unity中的基础光照 文章目录 Unity Shader的学习笔记前言一、我们是如何看到这个世界的1. 光源2.吸收和散射3.着色 二、标准光照模型1. 自发光2. 高光反射① Phong模型② Blinn-Phong模型 3.漫反射4.环境光 总结 前…...
Lustre 语言的 Rust 生成相关的工作
目前 Lustre V6 编译器支持编译生成的语言为C语言。但也注意到,以 Rust 语言为生成目标语言,也存在若干相关工作。 rustre(elegaanz) 该项工作为 Lustre v6 语言的解析器,使用 Rust 语言实现。生成 Lustre AST。 项…...
std::endl为什么C++ 智能提示是函数?
在使用vscode 的C智能提示后,输入endl 后,提示的却是std::endl(basic_ostream<CharT, Traits> &os), 感觉比较奇怪,各种代码里都是直接用的std::endl 啊, 这里怎么变成函数了呢? 在 C 中,std::en…...
大模型在肺血栓栓塞症风险预测及临床方案制定中的应用研究
目录 一、引言 1.1 研究背景与意义 1.2 研究目的与创新点 二、肺血栓栓塞症概述 2.1 定义与流行病学 2.2 发病机制与病理生理 2.3 临床表现与诊断方法 三、大模型技术原理与应用现状 3.1 大模型技术基础 3.2 在医疗领域的应用进展 3.3 选择大模型进行肺血栓栓塞症预…...
用一颗红黑树同时封装出map和set
目录 1. 红黑树源代码 2. 红黑树模版参数的控制 3. 红黑树节点当中存储的数据 4. 模板参数中仿函数的增加 5. 正向迭代器的实现 6. set模拟实现 7. map的模拟实现 8. 封装后的代码 8.1 红黑树的代码 8.2 正向迭代器的代码 8.3 set的代码 8.4 map的代码 1. 红黑树源…...
C Sharp上位机需要掌握哪些知识?
学历不高就不要有进大厂的想法了,你就在上位机这一条路上走到底。 .NET桌面程序开发有WPF和Winform。Winform比较简单,拖拖控件,难度不大,这种级别的开发,新人上手一个月就够了,但是不会有哪家公司专门招聘…...
【自学笔记】Spark基础知识点总览-持续更新
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 Apache Spark基础知识点总览目录简介核心组件Spark SQLDataFrame与Dataset APIRDD(弹性分布式数据集)Spark StreamingMLlib(机器…...
基于Spring Boot的智能停车计费系统的设计与实现(LW+源码+讲解)
专注于大学生项目实战开发,讲解,毕业答疑辅导,欢迎高校老师/同行前辈交流合作✌。 技术范围:SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容:…...
数据不外传!通过内网穿透实现绿联NAS远程访问的安全配置方案
文章目录 前言1. 开启ssh服务2. ssh连接3. 安装cpolar内网穿透4. 配置绿联NAS公网地址 前言 大家好,今天要带给大家一个超级酷炫的技能——如何让绿联NAS秒变‘千里眼’,通过简单的几步操作就能轻松实现内网穿透。想象一下,无论你身处何地&a…...
地理信息可视化技术大全【WebGIS 教程一】
前言: 在当今数据驱动的时代,地理信息技术(GIS)和空间数据可视化已成为科学研究、商业决策和智慧城市建设的重要工具。随着Web技术的快速发展,基于浏览器端的地图渲染和地理信息处理能力显著增强,各类开源与…...
huggingface datasets库中的load_dataset方法-------deepseek问答记录
1. 基本介绍 Hugging Face 的 datasets 库中的 load_dataset 方法是用于加载数据集的核心工具,它支持从多种来源(如本地文件、Hugging Face Hub、内存数据等)加载数据集,并返回标准的 Dataset 或 DatasetDict 对象,方…...
网络故障排查
网络故障排查 导航 一、电脑端排查 引起网络故障的原因有很多,我按照实际处理遇到的问题的频率还有检测所需时间尽可能短开始进行排查,建议按下面的顺序来排查 电脑网口 首先,应该检查该网口是否正常闪烁黄灯 如果没有亮灯,抓…...
字符串匹配问题(strs)(信息学奥赛一本通-1355)
【题目描述】 字符串中只含有括号 (),[],<>,{},判断输入的字符串中括号是否匹配。如果括号有互相包含的形式,从内到外必须是<>,(),[],{},例如。输入: [()] 输出:YES,而输入([]),([)]都应该输出NO。 【输入】 第一行为…...
MD2Card(markdown)
MD2Card 介绍: 1.小红书爆款神器,Markdown笔记秒转高颜值卡片 2.实时预览15种主题,自动拆长文,图片/SVG导出即用 3.零门槛不登录,免费无限生成,专治排版废和设计手残党 网站地址: https://md2…...
企业微信实现“关联外部选项“、“审批控件中的外部选项“
企业微信实现"关联外部选项"、"审批控件中的外部选项" 需求背景参考文档 需求背景 公司自定义了运营成本审批流程的模板,需要调用公司API获取小区列表(关联外部选项),将选中的值带入到审批里面来。开通配置权限请参考下面参考文档&…...