OpenCV: reconstruct() not found

OpenCV: reconstruct() not found

本文关键字:not found reconstruct OpenCV      更新时间:2023-10-16

我正在使用QT,我想尝试OpenCV中的cv::sfm::reconstruct((函数。但我无法构建它,因为他们说命名空间 cv::sfm 中没有重建。

我知道 cv::sfm::reconstruct(( 将被禁用,如果我没有安装 ceres-solver。所以我在自制软件上安装了谷神星求解器。

使用 QT,我添加了所有库和标头,如下所示:

INCLUDEPATH += /usr/local/include/eigen3/ 
/usr/local/Cellar/ceres-solver/HEAD-202dd9f_4/include/ 
/usr/local/include/OpencvHeader/
LIBS += -L/usr/local/Cellar/ceres-solver/HEAD-202dd9f_4/lib -lceres
LIBS += -L/usr/local/lib -lopencv_core -lopencv_sfm ...

因为我仍然有同样的问题,所以我认为我通过加载标题或库做错了什么,我希望这里有人可以帮助我解决这个问题。

或者我怎么能让CERES_FOUND是真的?

我不是为了解决问题而采取的。但在一种情况下,p-a-o-l-o的答案是有帮助的。因为有时如果版本是较新的版本或其他版本,则不会加载谷神星求解器。所以我定义了

#define CERES_FOUND true

贝沃尔我包括

#include<opencv2/sfm.hpp>

我还添加了定义

#define OPENCV_TRAITS_ENABLE_DEPRECATED

在此之前。最后一件事是,他们展示的例子不再起作用了。我尝试使用如下所示的字符串向量加载我的图像:

    bool is_projective = true;
    vector<Mat> Rs_est, ts_est, points3d_estimated;
    Matx33d K = Matx33d(f, 0, cx,
                        0, f, cy,
                        0, 0, 1);
    std::vector<string> images_paths;    
    reconstruct(images_paths, Rs_est, ts_est, K, points3d_estimated, is_projective);

不知何故,它犯了一个错误。您还可以在此处找到此示例的正确版本。它显示他们不是使用字符串而是字符串。

我不知道为什么其他字符串类型会出现问题,但从那时起它对我有用。所以正确的代码是:

        std::vector<String> images_paths;    
        reconstruct(images_paths, Rs_est, ts_est, K, points3d_estimated, is_projective);