OpenCV重塑功能无法正常工作

时间:2016-03-24 00:16:55

标签: c++ opencv

我正在使用OpenCV重塑功能,以便将25行和1列的Mat(我们有25个数据值)重新整形为5行5列的Mat。

data = mu.reshape(5, 5);

当我在调试器中查看我的数据变量时,它有5行但是1列。如果我在第(0)行和第(0)行打印数据,它将输出所有五个值。所以col(0)的每一行基本上都包含5个值。

我想要的结果是获得5行和5列,其中每行(row,col)将是一个值。

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

您似乎误解了reshape()函数的参数含义。

根据documentation,签名是

Mat Mat::reshape(int cn, int rows=0) const

具有以下参数含义:

  • cn - 新的频道数量。如果参数为0,则通道数保持不变。
  • - 新行数。如果参数为0,则行数保持不变。

请注意,列数是隐含的 - 它是根据现有的矩阵属性和两个参数计算的。

根据这个,代码

data = mu.reshape(5, 5);

创建一个5行1列的5通道矩阵。

为了将矩阵重塑为单个通道5x5矩阵,您必须执行以下操作:

data = mu.reshape(1, 5);

或者,由于输入矩阵已经是单通道,您也可以使用

data = mu.reshape(0, 5);