OpenCV 中 cv::split() 的最基础用法

OpenCV 中 cv::split() 的最基础用法

一、cv::split() 是干什么的?

一句话:把一张多通道图像,拆成好几个单通道图像。

比如:

  • 3通道彩色图(RGB/BGR) → 拆成 R、G、B 三张灰度图
  • 4通道带透明度 → 拆成 R、G、B、A

二、最基本用法(标准格式)

cpp 复制代码
// 把 image 拆分成多个单通道图像,放进 channels 里
void cv::split(
    const cv::Mat& image,          // 输入:多通道图像(比如3通道彩色图)
    std::vector<cv::Mat>& channels // 输出:每个单通道图像(vector装)
);

三、超级简单例子(一看就会)

例子1:把彩色图拆成 R、G、B

cpp 复制代码
// 1. 读取一张彩色图片
cv::Mat image = cv::imread("test.jpg");  // 3通道 BGR

// 2. 创建一个vector,用来装拆出来的3个通道
vector<cv::Mat> channels;

// 3. 拆分!
cv::split(image, channels);

// 现在:
// channels[0] = B 通道(灰度图)
// channels[1] = G 通道(灰度图)
// channels[2] = R 通道(灰度图)

结果:

一张彩色图 → 变成 三张灰度图


四、另一种写法(数组写法)

你代码里用的就是这种:

cpp 复制代码
cv::Mat channels[3];
cv::split(image, channels);

效果完全一样,只是用数组存。


五、最重要的知识点(你必须懂)

split 做了什么?

输入图像(3通道)的内存排布:

复制代码
B G B G B G B G ...

split 之后:

复制代码
channels[0] = B B B B B B
channels[1] = G G G G G G
channels[2] = R R R R R R

一句话:

split 把交织在一起的通道,分开成连续的单通道。


六、你现在再看你原来的代码

cpp 复制代码
// 1. 先给 ms 里每个 mat 绑定好 Tensor 的内存地址(只是指路)
ms[i] = cv::Mat(height, width, CV_32F, cpu<float>(n, i));

// 2. 然后 split 把图像拆开放进这些地址里!
cv::split(image, &ms[0]);

现在是不是彻底懂了?

  1. 先准备好 3 个空的单通道 Mat(指向Tensor)
  2. split 把彩色图拆开,直接写入这 3 个 Mat
  3. 因为 Mat 指向 Tensor,所以数据直接进 Tensor!

超级精简总结

cv::split(输入多通道图, 输出单通道数组)

功能:把彩色图拆成 R、G、B 三个灰度图

你代码里的用途:拆通道 + 直接写入Tensor内存

相关推荐
AI码农小姐姐2 分钟前
2026好用的AI一键成片平台:知漫剧如何颠覆传统动漫短剧制作?
人工智能
资源大佬星 课it9 分钟前
黑马 Java+AI新版V16零基础就业班视频课程百度网盘下载
java·开发语言·人工智能
杀生丸学AI9 分钟前
【三维重建】QuerySplat:在 3DGS 预测中解耦几何与外观表征
人工智能·3d·三维重建·扩散模型·高斯泼溅·空间智能·室内重建
鲁邦通物联网20 分钟前
充电站底层脱机DLB引擎解构:基于Linux调度的边缘计算网关并发控制实战
linux·运维·人工智能·边缘计算·边缘计算网关·5g数采·工业级边缘计算网关
ADRU22 分钟前
深度拆解DeepSeek Harness插件热更新实现原理
人工智能·ai·ai编程
李昊哲小课26 分钟前
大模型应用开发课程——项目 13~16 完整教程
人工智能·大模型·智能体
有脚就行29 分钟前
第32篇-弹性训练与容错-让训练任务永不中断
人工智能
移动云开发者联盟30 分钟前
密态计算落地!MobileClaw解锁安全AI新范式
大数据·人工智能·安全
一次旅行38 分钟前
2026‑08‑19 AI产业深度解读|Mojo正式开源、Agent记忆剂量研究、OpenAI收紧模型安全管控
人工智能·开源·mojo
HackTwoHub39 分钟前
开箱即用 AI 渗透测试系统,整合多类AI工具、Web安全、内网攻防、二进制逆向、API测试、流量分析等多个安全领域
人工智能·安全·web安全·网络安全·系统安全·网络攻击模型·安全架构