Mat的单通道作为矩阵Opencv

Posted

技术标签:

【中文标题】Mat的单通道作为矩阵Opencv【英文标题】:Single Channel of Mat as a matrix Opencv 【发布时间】:2013-01-24 21:13:43 【问题描述】:

我试图将存储在 Mat 通道中的 RGB 图像的每个通道转换为 3 个 2D 矩阵,每个矩阵用于 R、G 和 B。这个问题可能是初级的,但你能告诉我如何实现这个吗?我在Linux中使用opencv2.4.3,Cmake编译器。

我使用了 split,但它再次将值存储在 Mat 中。我想要一个可以轻松访问的简单二维数组,而不是 Mat。你能帮帮我吗?

【问题讨论】:

我尝试了vectorchannel_rgb(3) split(src,channel_rgb) 并尝试访问channel_rgb[0],[1],[2]。我认为这行不通。 我真的不明白二维数组如何比 Mat 更容易访问...如果您不喜欢 .at 语法,为什么不将其转换为 Mat_ ? 你所说的二维数组是指指向数组的指针数组吗?如 double_ptr[i][j]?如果这就是您所说的维度,那么在内部,Mat 始终表示一维数据 【参考方案1】:

您可以使用split,来自opencv docs:

函数 split 将多通道数组拆分为单独的单通道数组

【讨论】:

vectorchannel_rgb(3) 分割(src,channel_rgb)。我试过这个。我应该改为使用 vectorchannel_rgb(3) split(src,channel_rgb) 吗?但我正在寻找简单的二维数组,而不是 Mat。你能帮帮我吗? 有没有一种简单的方法可以将 Mat 转换为 2D 数组? 如果我的疑问是相关的,或者我不清楚,请帮助我? 使用Mat...使用Mat有什么问题?...或者将Mat中的元素逐个复制到二维无符号字符数组...分别对所有3个通道执行此操作...

以上是关于Mat的单通道作为矩阵Opencv的主要内容,如果未能解决你的问题,请参考以下文章

如何将 Mat 转换为 dlib 的矩阵

opencv中 Mat矩阵申明形式

opencv矩阵运算

学习OpenCV2——Mat之通道的理解

[OpenCV学习笔记2][Mat数据类型和操作]

opencv中Mat使用