我有一个std::vector填充了3x3的opencv矩阵。我想展开矩阵,把它们写成9×N的Eigen::Matrix。
std::vector<cv::Mat1d> cvMatrix;
// some code that generates a std::vector with 3880 cv matrices, the cv matrices have the size 3x3
Eigen::Matrix<double, Eigen::Dynamic, 9> eigenMatrix;
for (int i = 0; i < curvatures.size(); i++) {
eigenMatrix.resize(i + 1, 9);
for (int j = 0; j < 9; j++) {
eigenMatrix(i, j) = cvMatrix[i](j / 3, j % 3);
}
}
如果我在元素被写入后立即检查它们(例如,如果I==10,则打印特征矩阵的值),似乎所有的东西都找到了,但是在for循环完成后,就不再成立了。特征矩阵中的大多数元素似乎都包含零点。有人能解释这里发生了什么吗?
Eigen::Matrix<double, Eigen::Dynamic, 9> eigenMatrix;
eigenMatrix.resize(curvatures.size(), 9);
甚至只是
Eigen::Matrix<double, Eigen::Dynamic, 9> eigenMatrix(curvatures.size(), 9);
在启动for-loop之前。
如果您需要调整矩阵的大小,但要保留内容,可以使用