解决PCl库依赖的flann与Opencv的冲突问题:

程序编译会定位到错误:flann/util/serialization.h中std::unordered_map<XXX, XXX> no member named serialize()。
参考issue做了许多尝试最终解决了。
主要问题出在opencv头文件中的一些宏定义和flann库中的冲突,最后解决方案就是从自己的main函数所在文件中开始一步步查看头文件的包含顺序,一定要保证pcl库中依赖的flann在opencv头文件之前先包含进去。
比如我遇到这个问题的解决方法如下:

#include <stdexcept>
#include <opencv2/opencv.hpp>
#include "icp.hpp"
#include "depth_utils.hpp"

改为

#include <stdexcept>
#include "icp.hpp"
#include "depth_utils.hpp"
#include <opencv2/opencv.hpp>

即可。因为我的icp.h头文件包含了许多pcl头文件并且依赖了flann.

补充:因为我在进行点云处理时用到了kdtree,这个会依赖flann库。因为我这边把pcl和flann都根据自己的要求做了简化,作为一个第三方源码库可以对其内容随意添加修改,我尝试过在flann库中的serialization.h中添加#include<unordered_map>,或者在lsh_table.h中添加宏定义#define USE_UNORDERED_MAP 1 都不解决问题。

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值