我正在使用OpenCV的reshape函数,将一个25行1列的Mat(即包含25个数据值)重塑为一个5行5列的Mat。
data = mu.reshape(5, 5);
当我在调试器中查看我的数据变量时,它有5行但只有1列。如果我打印row(0)和col(0)处的数据,则输出所有五个值。因此,每行在col(0)处包含5个值。
我的期望结果是获得5行5列,其中每个(row,col)将有一个值。
非常感谢您的帮助。
reshape()
函数的参数含义。Mat Mat::reshape(int cn, int rows=0) const
以下是参数的含义:
请注意,列数是隐含的——它是从现有矩阵属性和两个参数计算出来的。
根据这个,代码如下:
data = mu.reshape(5, 5);
创建一个5行1列的5通道矩阵。
为了将您的矩阵重塑为单通道5x5矩阵,您需要执行以下操作:
data = mu.reshape(1, 5);
另外,由于输入矩阵已经是单通道的,您也可以使用
data = mu.reshape(0, 5);
mu.reshape(1,5);
或者mu.reshape(0,5);
。请查看 文档。 - Dan Mašek