Win7/Win10 + VS2015 + PCL 1.8.0 配置方案详解
概述
本文主要介绍如何在 Windows 7 或 Windows 10 操作系统上使用 Visual Studio 2015 配置 PCL(Point Cloud Library) 1.8.0。其中,PCL 是一个开源的库,用于处理点云数据。在配置 PCL 开发环境之前,需要先安装 Visual Studio 2015 和 CMake。
安装 Visual Studio 2015
- 访问 Visual Studio 下载页面,下载并安装 Visual Studio 2015。
- 在安装过程中,需要选择安装以下组件:
- Visual C++ 2015(或Visual C++ 2015 Build Tools)
- Windows SDK(通常是最新的版本)
- .NET 桌面开发(通常是默认选项)
安装 CMake
- 访问 CMake 下载页面,下载并安装 CMake。
- 在安装过程中,需要选择添加CMake到系统
PATH
变量(Add CMake to the system PATH for all users)
配置 PCL
- 下载 PCL 1.8.0 的源代码。
- 打开 CMake,在
Where is the source code:
中选择 PCL 1.8.0 的源代码文件夹,同时在Where to build the binaries:
中选择一个空文件夹作为 PCL 的构建目录。 - 点击
Configure
按钮,在对话框中选择Visual Studio 14
作为Generator
,并勾选WIN32
和BUILD_SHARED_LIBS
。在Programs
分类中,勾选BUILD_visualization
、BUILD_gpu_features
和BUILD_examples
(可选)。 - 完成配置后,点击
Generate
按钮生成 Visual Studio 解决方案。生成成功后,即可通过 Visual Studio 打开解决方案并编译。
示例说明
示例一:加载并显示点云
#include <iostream>
#include <pcl/io/pcd_io.h>
#include <pcl/point_types.h>
#include <pcl/visualization/cloud_viewer.h>
int main()
{
// 加载点云数据
pcl::PointCloud<pcl::PointXYZRGB>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZRGB>);
pcl::io::loadPCDFile("point_cloud.pcd", *cloud);
// 创建可视化窗口
pcl::visualization::PCLVisualizer viewer("Point Cloud Viewer");
// 将点云添加到窗口中
viewer.addPointCloud(cloud, "Sample Cloud");
// 设置窗口背景颜色
viewer.setBackgroundColor(0, 0, 0);
// 等待窗口关闭
while (!viewer.wasStopped())
{
viewer.spinOnce(100);
std::this_thread::sleep_for(std::chrono::milliseconds(100));
}
return 0;
}
示例二:提取表面并进行可视化
#include <iostream>
#include <pcl/io/pcd_io.h>
#include <pcl/point_types.h>
#include <pcl/filters/voxel_grid.h>
#include <pcl/kdtree/kdtree.h>
#include <pcl/features/normal_3d.h>
#include <pcl/surface/mls.h>
#include <pcl/surface/gp3.h>
#include <pcl/visualization/cloud_viewer.h>
int main()
{
// 加载点云数据
pcl::PointCloud<pcl::PointXYZ>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZ>);
pcl::io::loadPCDFile("point_cloud.pcd", *cloud);
// 对点云进行下采样
pcl::PointCloud<pcl::PointXYZ>::Ptr cloud_filtered(new pcl::PointCloud<pcl::PointXYZ>);
pcl::VoxelGrid<pcl::PointXYZ> sor;
sor.setInputCloud(cloud);
sor.setLeafSize(0.01f, 0.01f, 0.01f);
sor.filter(*cloud_filtered);
// 估计点云法线
pcl::PointCloud<pcl::Normal>::Ptr normals(new pcl::PointCloud<pcl::Normal>);
pcl::search::KdTree<pcl::PointXYZ>::Ptr tree(new pcl::search::KdTree<pcl::PointXYZ>);
tree->setInputCloud(cloud_filtered);
pcl::NormalEstimation<pcl::PointXYZ, pcl::Normal> ne;
ne.setInputCloud(cloud_filtered);
ne.setSearchMethod(tree);
ne.setRadiusSearch(0.03);
ne.compute(*normals);
// 进行曲面重建
pcl::MovingLeastSquares<pcl::PointXYZ, pcl::PointXYZ> mls;
mls.setInputCloud(cloud_filtered);
mls.setPolynomialFit(true);
mls.setSearchMethod(tree);
mls.setSearchRadius(0.01);
pcl::PointCloud<pcl::PointXYZ>::Ptr smoothed_cloud(new pcl::PointCloud<pcl::PointXYZ>);
mls.process(*smoothed_cloud);
pcl::GreedyProjectionTriangulation<pcl::PointXYZ> gp3;
gp3.setInputCloud(smoothed_cloud);
gp3.setSearchRadius(0.025);
gp3.setMu(2.5);
gp3.setMaximumNearestNeighbors(100);
gp3.setMaximumSurfaceAngle(M_PI / 4);
gp3.setMinimumAngle(M_PI / 18);
gp3.setMaximumAngle(2 * M_PI / 3);
gp3.setNormalConsistency(false);
pcl::PolygonMesh triangles;
gp3.reconstruct(triangles);
// 创建可视化窗口
pcl::visualization::PCLVisualizer viewer("Point Cloud Viewer");
// 将曲面添加到窗口中
viewer.addPolygonMesh(triangles, "Sample Triangles");
// 设置窗口背景颜色
viewer.setBackgroundColor(0, 0, 0);
// 等待窗口关闭
while (!viewer.wasStopped())
{
viewer.spinOnce(100);
std::this_thread::sleep_for(std::chrono::milliseconds(100));
}
return 0;
}
以上就是 Win7/Win10 + VS2015 + PCL 1.8.0 的配置方案完整攻略,希望对大家有所帮助。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:win7/win10+vs2015+pcl1.8.0配置方案详解 - Python技术站