correspondence_grouping 编译问题及示例运行效果

@correspondence_grouping 编译问题及示例运行效果

correspondence_grouping 编译问题及示例运行效果

本文介绍PCL官方示例correspondence_grouping 在Win10+VS2017+PCL1.91下的编译问题及运行效果。
官网示例链接为:[http://pointclouds.org/documentation/tutorials/correspondence_grouping.php#correspondence-grouping]

编译问题

Visual Studio 用的是VS2017社区版,操作系统是Win10 64位的,编译示例是64位的程序,配置好库后,编译会遇到问题:
error C4996: ‘vtkMapper::ImmediateModeRenderingOff’: 被声明为已否决
解决方法:在项目上右键,打开项目属性,在配置属性->C/C+±>常规->SDL检查改为否,如下图所示。
在这里插入图片描述
接着进行编译遇到如下错误:
error LNK2001: 无法解析的外部符号 LZ4_resetStreamHC
error LNK2001: 无法解析的外部符号 LZ4_compress_HC_continue
error LNK2001: 无法解析的外部符号 LZ4_decompress_safe
error LNK2001: 无法解析的外部符号 LZ4_setStreamDecode
error LNK2001: 无法解析的外部符号 LZ4_decompress_safe_continue
注释掉此文件头可解决问题,如下图所示
在这里插入图片描述
编译成功后可以使用示例数据进行效果验证:
model_filename_ = “milk.pcd”
scene_filename_ = “milk_cartoon_all_small_clorox.pcd”
数据在官网链接上可以进行下载,但是milk.pcd数据少了些,可以直接在GitHub上下载数据,[https://github.com/PointCloudLibrary/data/blob/master/tutorials/correspondence_grouping/milk.pcd]

配置好相关参数,这些参数是官网上给出,具体含义,看官网说明
bool show_keypoints_(true);
bool show_correspondences_(true);
bool use_cloud_resolution_(false);
bool use_hough_(true);
float model_ss_(7.5f);
float scene_ss_(20.f);
float rf_rad_(10.f);
float descr_rad_(15.f);
float cg_size_(10.f);
float cg_thresh_(5.0f);

运行结果如下,并没有得到想要的结果。
在这里插入图片描述
再来一次,运行效果如下:
在这里插入图片描述
在这里插入图片描述
算法效果不稳定。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
非常抱歉,给出的代码中可能存在错误。在PCL库中,`pcl.IterativeClosestPoint`对象没有`set_max_correspondence_distance`方法。下面是一种使用PCL库中的其他方法来设置ICP算法的最大对应距离的示例: ```python import pcl # 创建源点云和目标点云对象 source_cloud = pcl.PointCloud() source_cloud.from_file("path/to/source_cloud.pcd") target_cloud = pcl.PointCloud() target_cloud.from_file("path/to/target_cloud.pcd") # 创建ICP对象 icp = pcl.IterativeClosestPoint() # 设置源点云和目标点云 icp.setInputSource(source_cloud) icp.setInputTarget(target_cloud) # 设置ICP算法参数 max_correspondence_distance = 0.01 # 最大对应距离 icp.setMaxCorrespondenceDistance(max_correspondence_distance) # 执行ICP配准 aligned_cloud = pcl.PointCloud() icp.align(aligned_cloud) # 输出配准结果 print("ICP has converged:", icp.hasConverged()) print("Transformation matrix:\n", icp.getFinalTransformation()) ``` 在上述示例中,我们首先加载源点云和目标点云数据,并创建了对应的PointCloud对象。然后,我们创建了一个`pcl.IterativeClosestPoint`对象,并将源点云和目标点云设置为其输入。接着,我们使用`setMaxCorrespondenceDistance`方法设置了ICP算法的最大对应距离参数。 然后,我们执行ICP配准,并将结果保存在新创建的PointCloud对象`aligned_cloud`中。最后,我们打印出ICP是否收敛的信息以及最终的变换矩阵。 请确保在运行代码之前已经安装了`py-pcl`库和PCL库及其依赖。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值