1

我正在为我的程序(在 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”没有命名类型

还有其他解决方法吗?

4

2 回答 2

3

遇到了同样的问题。

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

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

using namespace cv;
using namespace pcl;

你会在那里发生冲突。

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

于 2013-02-28T12:12:07.900 回答
2

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

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

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

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

于 2012-08-13T13:24:53.187 回答