matlab的reshape和opencv的reshape异同

来源:互联网 发布:linux流量统计工具 编辑:程序博客网 时间:2024/05/13 16:14


1、首先要了解opencv和matlab的数据存储方式。

1.1、opencv的矩阵对应Mat结构,具体数据存储在data指针中

1.2、matlab的矩阵就是一个矩阵变量了,没什么好说的。

1.3、两者存储结构差异:matlab是按列存储的,opencv的Mat是按行存储的。行列存储又是什么意思呢?数据都是存储在一个内存的存储空间的。假设为矩阵分配一个连续的存储空间。matlab和opencv的两个矩阵都是3*3的。


matlab的内存存储结构应该为:1,4,7,2,5,8,3,6,9;

opencv的内存存储结构应该为:1,2,3,4,5,6,7,8,9;


2、reshape主要是改变了数据头的结构,并未对数据进行调整。因此在reshape后,两者的数据并未改变。

2.1、看出差异:两者都reshape成1列的向量,那么发现数据是不一样。


3、如何保证reshape相同呢?

3.1、opencv的矩阵先转置;这里注意,转置是重新分配空间的。

3.2、然后再reshape就和matlab的操作一直了。




0 0
原创粉丝点击