如何在OpenCV中访问多维Mat中的2D矩阵
how to access 2D matrix in a multi-dimension Mat in OpenCV
我在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矩阵的每个维度
相关文章:
- C++中的openCV Mat访问冲突
- 使用 mat.at<uchar>(i,j) 的 opencv C++中的矩阵赋值错误
- openCV Mat 中的值在自定义类构造函数中设置后不会保留
- 在不复制数据的情况下更改 opencv mat 中的列顺序
- 如何在自己的函数中最好地处理Mat中的不同数字格式
- C++ |使用 setTo 更改 cv::mat 中的颜色
- 指向 OpenCV / C++ 中 Mat 中的最后一个元素
- cv::Mat中的地址错误
- 使用最小值和最大值缩放 Mat 中的每个单元格
- 自动释放 Mat 中的用户数据.可能吗
- 从cv::Mat中的cv::Point的矢量转换轮廓
- 在openCV中访问mat中的元素时获取垃圾值
- 使用pcl将存储在Mat中的深度图转换为点云
- 如何在OpenCV中访问多维Mat中的2D矩阵
- 如何在创建时强制cv::Mat中的数据类型为float ?
- 如何简洁地将cv::Mat中的每个元素设置为一些标量,如cvSet
- 将cv::Scalar的值设置为opencv中cv::Mat中的一个像素的正确(最佳)方法是什么?
- OpenCV/ c++:将一个Mat中的行/列复制到另一个Mat中
- 访问OpenCV Mat中的多个通道
- 访问多通道OpenCV Mat中的元素