opencv中如何将两个类型为Mat的矩阵合为一个矩阵?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了opencv中如何将两个类型为Mat的矩阵合为一个矩阵?相关的知识,希望对你有一定的参考价值。

假设现在有两个个Mat类型的矩阵H和R,H为3*3,R为3*1,要变成3*4的矩阵,该如何操作?利用push.back吗?

参考技术A Mat dstMat = M.column(4); //M为目的矩阵 3*4
srcMat.copyTo(dstMat);本回答被提问者采纳

Mat的单通道作为矩阵Opencv

【中文标题】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个通道执行此操作...

以上是关于opencv中如何将两个类型为Mat的矩阵合为一个矩阵?的主要内容,如果未能解决你的问题,请参考以下文章

opencv中Mat与IplImage,CVMat类型之间转换

如何将 Mat 转换为 dlib 的矩阵

opencv中MatND和Mat的区别

Mat的单通道作为矩阵Opencv

如何将opencv Mat矩阵保存到可以在Matlab中加载的文件中

如何在 Opencv 中显示一个 Mat