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

how to access 2D matrix in a multi-dimension Mat in OpenCV

本文关键字:Mat 中的 2D 矩阵 访问 OpenCV      更新时间:2023-10-16

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

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

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

一个简单的方法是:

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];

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

注意在OpenCV中多通道矩阵和多维矩阵是有区别的。

如果你对后者感兴趣,这里有一个例子,展示了如何访问3d矩阵的每个维度