我正在使用 OpenCV reshape 函数将 25 行和 1 列的 Mat(因此我们有 25 个数据值)重塑为 5 行和 5 列的 Mat。
data = mu.reshape(5, 5);
Run Code Online (Sandbox Code Playgroud)
当我在调试器中查看我的数据变量时,它有 5 行但有 1 列。如果我在 row(0) 和 col(0) 打印数据,它会输出所有五个值。所以基本上 col(0) 处的每一行都包含 5 个值。
我想要的结果是获得 5 行和 5 列,其中每个 (row,col) 将是一个值。
预先感谢您的帮助。
您似乎误解了reshape()函数参数的含义。
根据文档,签名是
Mat Mat::reshape(int cn, int rows=0) const
Run Code Online (Sandbox Code Playgroud)
参数的含义如下:
请注意,列数是隐式的——它是根据现有矩阵属性和两个参数计算得出的。
据此,代码
data = mu.reshape(5, 5);
Run Code Online (Sandbox Code Playgroud)
创建一个 5 行 1 列的 5 通道矩阵。
为了将矩阵重塑为单通道 5x5 矩阵,您必须执行以下操作:
data = mu.reshape(1, 5);
Run Code Online (Sandbox Code Playgroud)
或者,由于输入矩阵已经是单通道,你也可以使用
data = mu.reshape(0, 5);
Run Code Online (Sandbox Code Playgroud)