我正在使用OpenCV重塑功能,以便将25行和1列的Mat(我们有25个数据值)重新整形为5行5列的Mat。
data = mu.reshape(5, 5);
当我在调试器中查看我的数据变量时,它有5行但是1列。如果我在第(0)行和第(0)行打印数据,它将输出所有五个值。所以col(0)的每一行基本上都包含5个值。
我想要的结果是获得5行和5列,其中每行(row,col)将是一个值。
提前感谢您的帮助。
答案 0 :(得分:1)
您似乎误解了reshape()
函数的参数含义。
根据documentation,签名是
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);