gpt4 book ai didi

c++ - 将元素从 opencv 矩阵复制到特征矩阵

转载 作者:行者123 更新时间:2023-11-28 01:16:01 26 4
gpt4 key购买 nike

我有一个 std::vector 填充了 3x3 opencv 矩阵。我想展开矩阵并将它们写在 9xn 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 则打印 eigenMatrix 的值)似乎可以找到所有内容,但在 for 循环完成后不再有效。 eigenMatrix 中的大多数元素似乎都包含零。谁能解释这里发生了什么?

最佳答案

eigenMatrix.resize(i + 1, 9); 破坏eigenMatrix的内容。既然一开始就已经知道最后的维度了,就写

Eigen::Matrix<double, Eigen::Dynamic, 9> eigenMatrix;
eigenMatrix.resize(curvatures.size(), 9);

甚至只是

Eigen::Matrix<double, Eigen::Dynamic, 9> eigenMatrix(curvatures.size(), 9);

在开始 for 循环之前。

如果你需要调整矩阵的大小,但保留内容,你可以使用 conservativeResize() -- 但应该避免这种情况,因为每次调整大小都需要完整拷贝。

关于c++ - 将元素从 opencv 矩阵复制到特征矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58689750/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com