Ubuntu 20.04.06 PCL C++学习记录(十五)

@[TOC]PCL中点云特征描述与提取模块的学习

学习背景

参考书籍:《点云库PCL从入门到精通》以及官方代码PCL官方代码链接,,PCL版本为1.10.0,CMake版本为3.16

学习内容

使用积分图进行法线估计,注意此方法只适用有序点云

源代码及所用函数

源代码

//使用积分图进行法线估计

#include<iostream>
#include<pcl/io/io.h>
#include<pcl/io/pcd_io.h>
#include<pcl/features/integral_image_normal.h>
#include<pcl/visualization/cloud_viewer.h>

int main()
{
    //打开点云
    pcl::PointCloud<pcl::PointXYZ>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZ>);
    pcl::io::loadPCDFile("/home/jojo/PointCloud/PCLB/Features/03/table_scene_mug_stereo_textured.pcd",*cloud);
    //创建法线向量
    pcl::PointCloud<pcl::Normal>::Ptr normals(new pcl::PointCloud<pcl::Normal>);
    pcl::IntegralImageNormalEstimation<pcl::PointXYZ,pcl::Normal> ne;
    /****************************************************************************************
     三种法线估计方法
      COVARIANCE_MATRIX 模式从具体某个点的局部邻域的协方差矩阵创建9个积分,来计算这个点的法线
     AVERAGE_3D_GRADIENT   模式创建6个积分图来计算水平方向和垂直方向的平滑后的三维梯度并使用两个梯度间的向量
                            积计算法线
     AVERAGE_DEPTH——CHANGE  模式只创建了一个单一的积分图,从而平局深度变化计算法线
     ********************************************************************************************/
    ne.setNormalEstimationMethod(ne.AVERAGE_3D_GRADIENT);//设置法线估计方式AVERAGE_3D_GRADIENT
    ne.setMaxDepthChangeFactor(0.02f);//设置深度变化系数
    ne.setNormalSmoothingSize(10.0f);//设置法线优化时考虑的邻域大小
    ne.setInputCloud(cloud);//输入的点云
    ne.compute(*normals);
    //可视化点云
    pcl::visualization::PCLVisualizer viewer("PCL Viewer");//设置窗口名称
    viewer.setBackgroundColor(0,0,0);//设置窗口背景颜色
    viewer.addPointCloudNormals<pcl::PointXYZ,pcl::Normal>(cloud,normals);
    while (!viewer.wasStopped())
    {
        viewer.spinOnce();
    }
    return 0;

}

CMakeLists.txt

cmake_minimum_required(VERSION 3.16 FATAL_ERROR)#指定CMake的最低版本要求为3.16
project(project)#设置项目名称
find_package(PCL 1.10 REQUIRED)#查找PCL库,要求版本为1.10或更高。
include_directories(${PCL_INCLUDE_DIRS})#将PCL库的头文件目录添加到包含路径中
link_directories(${PCL_LIBRARY_DIRS})#将PCL库的库文件目录添加到链接器搜索路径中。
add_definitions(${PCL_DEFINITIONS})#添加PCL库的编译器定义
add_executable (normal_estimation_using_integral_images normal_estimation_using_integral_images.cpp)
target_link_libraries (normal_estimation_using_integral_images ${PCL_LIBRARIES})#将PCL库链接到可执行文件目标。

运行结果

在这里插入图片描述

函数

补充内容

点云文件显示已存在,上传不了。

  • 9
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值