Windows下三维处理库——PCL点云库安装教程

来源:互联网 发布:mac虚拟机iso镜像文件 编辑:程序博客网 时间:2024/05/24 06:11

Windows下三维处理库——PCL点云库安装教程


每次使用新的东西都会在安装上花费大量的时间,这次虽然走了些弯路,但也还算顺利,还是有很多人会出现安装失败的教程,还是发个帖归纳下吧。

平台:windows 10 X64(只看)

所需数据文件:

vs2010 X64安装文件

PCL all-in-one安装包

pbd文件数据包

QT4.8.0安装文件

cmake3.3.1安装文件

除了vs2010需要自行下载,以上所有文件都可以在官网上找到:
http://pointclouds.org/downloads/windows.html
(有些文件下载速度比较慢,建议翻墙下载)

然后就可以开始安装了:

先关闭所有其他程序,安装vs2010,默认安装路径就行;

然后安装PCL all-in-one 安装包,默认安装路径就好,其间会问你需不需要添加PATH,请选择第二个:添加PATH到所有用户

PCL all-in-one安装好以后,并不能使用,还需要解压PBD数据文件,然后把解压后文件夹内所有数据复制到PCL安装目录下的bin文件夹中,这一步很关键,一定是要文件下的文件,直接复制文件夹貌似是不行的,我就走了这个弯路。。。

接下来安装QT4.8.0 ,同样是默认安装路径,其间也会问你需不需要添加PATH,和安装PCL all-in-one是一个道理,选择第二个就行。

最后安装cmake3.3.1 默认选项就好,这个都没什么问题。

于是环境文件就安装好了,我们可以尝试运行一个PCL程序:

在VS2010中新建一个C++空项目,然后新建一个CPP文件,贴入如下代码:

//这些代码都是从官网找到的实例#include <iostream>#include <pcl/io/pcd_io.h>#include <pcl/point_types.h>#include <pcl/ModelCoefficients.h>#include <pcl/filters/project_inliers.h>int main (int argc, char** argv){  pcl::PointCloud<pcl::PointXYZ>::Ptr cloud (new pcl::PointCloud<pcl::PointXYZ>);  pcl::PointCloud<pcl::PointXYZ>::Ptr cloud_projected (new pcl::PointCloud<pcl::PointXYZ>);  // Fill in the cloud data  cloud->width  = 5;  cloud->height = 1;  cloud->points.resize (cloud->width * cloud->height);  for (size_t i = 0; i < cloud->points.size (); ++i)  {cloud->points[i].x = 1024 * rand () / (RAND_MAX + 1.0f);cloud->points[i].y = 1024 * rand () / (RAND_MAX + 1.0f);cloud->points[i].z = 1024 * rand () / (RAND_MAX + 1.0f);  }  std::cerr << "Cloud before projection: " << std::endl;  for (size_t i = 0; i < cloud->points.size (); ++i)std::cerr << "" << cloud->points[i].x << " " << cloud->points[i].y << " " << cloud->points[i].z << std::endl;  // Create a set of planar coefficients with X=Y=0,Z=1  pcl::ModelCoefficients::Ptr coefficients (new pcl::ModelCoefficients ());  coefficients->values.resize (4);  coefficients->values[0] = coefficients->values[1] = 0;  coefficients->values[2] = 1.0;  coefficients->values[3] = 0;  // Create the filtering object  pcl::ProjectInliers<pcl::PointXYZ> proj;  proj.setModelType (pcl::SACMODEL_PLANE);  proj.setInputCloud (cloud);  proj.setModelCoefficients (coefficients);  proj.filter (*cloud_projected);  std::cerr << "Cloud after projection: " << std::endl;  for (size_t i = 0; i < cloud_projected->points.size (); ++i)std::cerr << "" << cloud_projected->points[i].x << " " << cloud_projected->points[i].y << " " << cloud_projected->points[i].z << std::endl;  return (0);}

我们会发现#include 处会报错,原因很简单,这段代码所需要的库文件是需要用cmake生成的,这也是我们要用到cmake的原因

接下来是很关键的几步,我们找到vs中这个项目的文件,比如说项目名字叫PCLTest,那我们就进入到PCLTest的文件夹下(注意是vs项目目录project下的那个文件夹,不要搞错了)。

新建一个叫source的空文件夹,再新建一个叫cmake-bin 的文件夹,把唯一的cpp文件拷贝到source中去,取名PCLtest.cpp,然后在cmake-bin中新建一个txt文件,名字叫Cmakelists

这些准备工作做完了,于是就可以编译库了,在Cmakelist.txt中添加如下命令
cmake_minimum_required(VERSION 2.8 FATAL_ERROR)

project(project_inliers)find_package(PCL 1.2 REQUIRED)include_directories(${PCL_INCLUDE_DIRS})link_directories(${PCL_LIBRARY_DIRS})add_definitions(${PCL_DEFINITIONS})add_executable (project_inliers project_inliers.cpp)target_link_libraries (project_inliers ${PCL_LIBRARIES})

打开cmake3.3.1

第一行填写source的目录,第二行添加cmake-bin的目录(路径不可以有中文出现,不然cmake会报错的)

然后点下面的configure按钮,等待一段时间,下面的输出框显示Configuring done

然后点击Generate 按钮 ,等待出现
Generating done

说明编译成功,接下来用vs2010打开source文件夹下面的PCLTest.sln,打开项目,右键设置PCLTest为启动项目,然后运行,如果所有步骤都完美的话,会出带有以下信息的窗口:

Cloud before projection:1.28125 577.094 197.938828.125 599.031 491.375358.688 917.438 842.563764.5 178.281 879.531727.531 525.844 311.281Cloud after projection:1.28125 577.094 0828.125 599.031 0358.688 917.438 0764.5 178.281 0727.531 525.844 0

如果是一闪就没有了的,请随便加个断点就行。

全文虽然没有图,但是应该是写清楚了得

0 0
原创粉丝点击