点云库1.7.1的编译及其使用

工作描述:Windows下使用vs2010编译点云库pcl-1.7.1,并演示如何使用此库。

主要参考网站:

http://pointclouds.org/documentation/tutorials/compiling_pcl_windows.php#compiling-pcl-windows

一、下载源码以及各依赖库

1、下载cmake: https://cmake.org/download/

2、源码下载网站:https://github.com/PointCloudLibrary/pcl/releases

3、依赖库下载网站:http://www.pointclouds.org/downloads/windows.html

根据需要下载对应的版本,我的是windows 32位系统,下载后的列表如下

 

其中VTK有两个版本,一个是支持qt,一个是不支持qt 的,根据官网建议是安装qt库。

 

二、使用cmake预编译,官网教程说的比较清楚,这里大致描述主要步骤

1、选择源码目录和预编译后的vs2010的工程文件所在目录

 

 

2、点击Configure配置编译环境

 

 

点击后会出现很多红色的提示,继续点击Configure,直到没有红色为止

 

3、然后点击Generate,在第一步配置的目录下(我这里是D:/pcl/pclcompile2)生成vs2010*.sln工程文件。

 

三、编译。

1、编译ALL_BUILD,右键解决方案里的ALL_BUILD,选择生成。注意要分别对debugrealease进行编译。原文是:Make sure to build the “ALL_BUILD” project in both debug and release mode.

注意,编译时在会报两个错误,错误位置在项目plc_io下的png_io.h文件里。首先是注释报错的那四行(大概在145行),然后在文件头部加上#pragma once

 

2、编译INSTALL,同样需要编译debugrealease两个版本。

完成后在C:\Program Files\PCL目录下会生成四个文件夹,其中bin里面包含一些动态链接库,当程序提示缺少某种dll时,可去此处拷贝。

 

 

四、pcl库的使用,此处将给出两种创建项目的方式,一种是官方网站演示的利用cmake生成项目,另一种是传统的直接用vs创建项目。

1、cmake生成项目

·首先建立预编译文件夹,里面有两个文件,一个是源码文件,一名是CMakeLists.txt文件。

·pcd_write.cpp源码文件内容

#include <pcl/io/pcd_io.h>
#include <pcl/point_types.h>

#pragma comment( lib, "pcl_io_debug.lib")
#pragma comment( lib, "pcl_common_debug.lib")

int main (int argc, char** argv)
{
    pcl::PointCloud<pcl::PointXYZ> cloud;
  // Fill in the cloud data
  cloud.width    = 5;
  cloud.height   = 1;
  cloud.is_dense = false;
  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);
  }

  pcl::io::savePCDFileASCII ("test_pcd.pcd", cloud);
  std::cerr << "Saved " << cloud.points.size () << " data points to test_pcd.pcd." << 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;

  return (0);
}

 

·CMakeLists.txt文件内容

cmake_minimum_required(VERSION 2.8 FATAL_ERROR)
project(pcd_write)
find_package(PCL 1.7 REQUIRED)
include_directories("C:/Program Files/PCL/include")
link_directories("C:/Program Files/PCL/lib")
add_executable (pcd_write pcd_write.cpp)

然后按照预编译pcl的方式对其进行预编译即可。

 

·编译时会报错,因为include下面的目录结构与源码引用的目录结构不一致,需将PLC/include/plc-1.7/plc文件夹拷贝一份至PLC/include/plc。同时会报一些依赖库的错误,在vs的配置里进行手动添加即可,具体可参考Vs2010生成项目的方式。

 

2、Vs2010生成项目

·生成vc的空白项目,新建一个cpp文件,内容与上述的pcd_write.cpp一样。

·配置include目录。在项目属性-配置属性-C/C++里配置附加包含目录。

     

 

·配置lib库目录。在项目属性-配置属性-链接器里配置附加库目录。

 

 

3、编译完成后运行程序,会提示缺少dll库,拷贝pcl_common_debug.dllpcl_io_debug.dllpcl_io_ply_debug.dll三个文件至debug目录下即可。

运行结果:

 

 

posted on 2018-03-07 10:16  寒水司天  阅读(725)  评论(0编辑  收藏  举报

导航