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

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.938
828.125 599.031 491.375
358.688 917.438 842.563
764.5 178.281 879.531
727.531 525.844 311.281
Cloud after projection:
1.28125 577.094 0
828.125 599.031 0
358.688 917.438 0
764.5 178.281 0
727.531 525.844 0

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

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

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值