假设我创建了一个5行和1列8UC3类型的矩阵M1以存储图像的RGB分量,然后我创建了另一个5行3列8UC1类型的矩阵M2以再次存储图像的RGB分量。
这两种类型的矩阵在内存中的存储/访问方式上是否有所不同?从http://www.cs.iit.edu/~agam/cs512/lect-notes/opencv-intro/opencv-intro.html#SECTION00053000000000000000(有关Stackoverflow的通用推荐的OpenCV教程)的理解中,矩阵的数据指针指向数据数组的第一个索引(矩阵内部存储为数组),并且各种RGB组件存储在交织中时尚(如果是8UC3)。
我的逻辑说,它们应该与1列8UC3(M1)的情况相同,对于每列存储RGB分量,在3列8UC1(M2)的情况下,每列存储RGB分量。
我希望我能够很好地提出我的问题。
提前致谢!
最佳答案
您的理解是正确的。内存布局将完全相同。因此,您可以通过reshape方法来来回廉价地转换表示形式。
将会有所不同的是OpenCV算法将如何处理这些矩阵。
假设内存占用量如下:
255 0 0
255 0 0
255 0 0
255 0 0
255 0 0
255 0 0 255 0 0
255 0 0 255 0 0
255 0 0 255 0 0
255 0 0 255 0 0
255 0 0 255 0 0
255 255 0 0 0 0
255 255 0 0 0 0
255 255 0 0 0 0
255 255 0 0 0 0
255 255 0 0 0 0
https://stackoverflow.com/questions/5906161/