【问题标题】:PCL, OpenCV and flann conflictPCL、OpenCV 和 flann 冲突
【发布时间】:2023-03-24 22:34:01
【问题描述】:

我的程序(在 Qt 中)使用 PCL 1.6、OpenCV 2.4.2,但我无法解决这个 flann (1.7.1) 冲突。

我已经在互联网上阅读了很多关于它的内容,并尝试了大多数解决方案(不使用using namespace cv,更新最新版本的 OpenCV 并将 PCL 包含在 OpenCV 包含之前等),但无论何时我使用PCL 和 OpenCV 一起使用,flann-lib(PCL 使用)会导致问题,例如对于这行代码typedef flann::Index<Dist> FLANNIndex;

/usr/include/pcl-1.6/pcl/kdtree/kdtree_flann.h:74: 错误:'flann' 没有命名类型

还有其他解决方法吗?

【问题讨论】:

    标签: opencv point-cloud-library


    【解决方案1】:

    我似乎找到了解决方案,但我不确定它是否是最好的。

    1. 我在../include/pcl-1.6/pcl/kdtree/kdtree_flann.h中添加了#include <flann/flann.h>,之后上面提到的错误就消失了。

    2. 但是后来 OpenCV 找不到它的 "flann/flann.h",所以我更改了 ../include/opencv2/flann中的目录> 到 flanncv 当然我也必须为每个包含该目录的 .h 文件执行此操作。

    这不是一个非常简洁的解决方案,但它现在正在工作。

    【讨论】:

    • 此解决方案似乎不适用于所有人。也许these 的一些建议可以。
    【解决方案2】:

    遇到了同样的问题。

    在 opencv 中有一个 flann 的实现,在 pcl 中有另一个(可能相同)。

    最初,它们生活在不同的命名空间中,但如果你喜欢

    using namespace cv;
    using namespace pcl;
    

    那里有冲突。

    所以,跳过 using namespace cv; 行,而是在代码中使用 cv::anything 解决了它。

    【讨论】:

    • 你拯救了我的一天!谢谢! :)
    猜你喜欢
    • 2012-09-10
    • 1970-01-01
    • 2016-12-19
    • 2017-10-26
    • 2023-03-19
    • 1970-01-01
    • 1970-01-01
    • 2014-05-02
    • 2012-01-24
    相关资源
    最近更新 更多