首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >OpenCV:找不到reconstruct()

OpenCV:找不到reconstruct()
EN

Stack Overflow用户
提问于 2018-01-29 19:08:04
回答 1查看 621关注 0票数 0

我正在使用QT,我想尝试一下OpenCV中的cv::sfm::reconstruct()函数。但是我不能构建它,因为他们说在名称空间cv::sfm中没有重构。

我知道如果我没有安装ceres-solver,cv::sfm::reconstruct()将被禁用。所以我安装了ceres-solver而不是自制软件。

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

代码语言:javascript
复制
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成为真的呢?

EN

回答 1

Stack Overflow用户

发布于 2018-01-31 00:33:08

我不确定我现在所做的一切都是为了解决问题。但在一个案例中,p-a-o-l-o的答案是有帮助的。因为有时ceres-solver不会被加载,如果版本是较新的版本或其他版本。所以我定义了

代码语言:javascript
复制
#define CERES_FOUND true

包括bevor I

代码语言:javascript
复制
#include<opencv2/sfm.hpp>

我还添加了定义

代码语言:javascript
复制
#define OPENCV_TRAITS_ENABLE_DEPRECATED

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

代码语言:javascript
复制
    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);

不知何故,它犯了一个错误。这个例子还有一个正确的版本,你可以找到here。这表明他们使用的不是字符串,而是字符串。

我不明白为什么另一种字符串类型会出问题,但从那时起,它就对我起作用了。所以正确的代码是:

代码语言:javascript
复制
        std::vector<String> images_paths;    
        reconstruct(images_paths, Rs_est, ts_est, K, points3d_estimated, is_projective);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48499827

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档