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库链接到可执行文件目标。

运行结果

在这里插入图片描述

函数

补充内容

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

相关推荐

  1. Ubuntu 20.04.06 PCL C++学习记录(二二)

    2024-04-08 17:40:02       30 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-08 17:40:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-08 17:40:02       100 阅读
  3. 在Django里面运行非项目文件

    2024-04-08 17:40:02       82 阅读
  4. Python语言-面向对象

    2024-04-08 17:40:02       91 阅读

热门阅读

  1. 2024.4.8每日一题

    2024-04-08 17:40:02       40 阅读
  2. go 使用pprof查看内存分布

    2024-04-08 17:40:02       38 阅读
  3. PostgreSQL的|| 和::

    2024-04-08 17:40:02       38 阅读
  4. python实现两个二维数组相加

    2024-04-08 17:40:02       33 阅读
  5. 【Python】RocketMQ 基础使用

    2024-04-08 17:40:02       26 阅读
  6. Bash Scripting Tutorial for Beginners - medium synoposis

    2024-04-08 17:40:02       37 阅读
  7. A Random Walk Based Anonymous Peer-to-Peer

    2024-04-08 17:40:02       23 阅读
  8. VSCode 快捷键的使用

    2024-04-08 17:40:02       39 阅读
  9. mysql

    2024-04-08 17:40:02       27 阅读
  10. 人工智能数据分析Python常用库 03 pandas库

    2024-04-08 17:40:02       28 阅读