如何在OpenCV中的多维Mat中访问2D矩阵

时间:2014-08-15 20:10:36

标签: c++ matlab opencv matrix

我在OpenCV中有一个多维矩阵,例如

Mat matrix(1,1,CV_64FC(100), Scalar(0));

我知道在Matlab中访问多维矩阵中的二维矩阵非常容易,例如矩阵(:,:,1),矩阵(:,:,100)。但是我们应该如何在OpenCV中做到这一点?确实,OpenCV可以使用at来访问矩阵中的一个元素,但是如何在修复通道时访问二维矩阵?谢谢!

2 个答案:

答案 0 :(得分:1)

一个简单的方法是以下

Mat matrix(1,1,CV_64FC(100), Scalar(0));

cv::vector<cv::Mat> channels;
cv::split(matrix,channels);
int i = 0;
cv::Mat channel_i = channels[i];

请参阅文档split,也许还有更高级的操作mixChannels。 (我自己没有使用mixChannels)

答案 1 :(得分:1)

请注意,OpenCV中的多通道矩阵和多维矩阵之间存在差异。

如果您对后者感兴趣,这里有一个示例,说明如何访问3d Matrix的每个维度