【问题标题】: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】:
我似乎找到了解决方案,但我不确定它是否是最好的。
我在../include/pcl-1.6/pcl/kdtree/kdtree_flann.h中添加了#include <flann/flann.h>,之后上面提到的错误就消失了。
但是后来 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 解决了它。