在OpenCV中访问3D矩阵的2D平面

4
我有一个3D矩阵,尺寸为25(行)x320(列)x235(通道)
对于这25行中的每一行,我想提取2D切片 (320 x 235),以便得到25个2D矩阵。
我不确定如何在OpenCV中实现这一点。
我考虑将3D矩阵转置,使其变为320(行)x235(列)x25(通道),然后使用split获取25个矩阵,但转置似乎无效(MATLAB甚至不允许在多维数组上进行转置)。
然后我尝试了reshape,但也没有成功。
是否可以使用NAryMatIterator?或者还有其他方法来完成此过程吗?
1个回答

3
您可以使用row()函数获取给定行的新标头,只需在每行调用它并存储它们。这是O(1)操作,因为没有复制数据,请注意,您所做的任何更改都将反映在原始矩阵中。可能有更优雅的解决方案,但我不知道。其余取决于您想要如何存储您的25个矩阵(可以使用数组、向量或任何您想要的)。Mat文档可以在此处找到,尽管结构不是很好。

感谢您的回复。使用row()函数在某种程度上确实解决了我的问题。我得到了25个维度为1x320,每个数组有235个通道的数组。然后我对每个数组进行了reshape操作,得到了320x235的矩阵。 - Sid
我以前从未做过这样的事情,所以我不确定你是否需要重新塑形。很高兴你解决了它。 - Hammer

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接