PCL,OpenCV和flann冲突

时间:2012-08-11 23:31:45

标签: opencv point-cloud-library

我正在使用PCL 1.6,OpenCV 2.4.2用于我的程序(在Qt中)并且存在我无法解决的这种flann(1.7.1)冲突。

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

  

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

还有其他解决方法吗?

2 个答案:

答案 0 :(得分:3)

遇到了同样的问题。

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

最初,他们住在不同的NAMESPACES,但如果你喜欢

using namespace cv;
using namespace pcl;
你在那里得到了冲突。

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

答案 1 :(得分: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文件执行此操作。

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