点云库1.7.1的编译及其使用
点云库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,选择生成。注意要分别对debug和realease进行编译。原文是:Make sure to build the “ALL_BUILD” project in both debug and release mode.
注意,编译时在会报两个错误,错误位置在项目plc_io下的png_io.h文件里。首先是注释报错的那四行(大概在145行),然后在文件头部加上#pragma once。
2、编译INSTALL,同样需要编译debug和realease两个版本。
完成后在C:\Program Files\PCL目录下会生成四个文件夹,其中bin里面包含一些动态链接库,当程序提示缺少某种dll时,可去此处拷贝。
四、pcl库的使用,此处将给出两种创建项目的方式,一种是官方网站演示的利用cmake生成项目,另一种是传统的直接用vs创建项目。
1、cmake生成项目
·首先建立预编译文件夹,下面有两个文件,一个是源码文件,一名是CMakeLists.txt文件。
·源码文件内容
#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文件,内容与上述一样。
·配置include目录。在项目属性–配置属性-C/C++里配置附加包含目录。
·配置lib库目录。在项目属性–配置属性–链接器里配置附加库目录。
3、编译完成后运行程序,会提示缺少dll库,拷贝pcl_common_debug.dll、pcl_io_debug.dll、pcl_io_ply_debug.dll三个文件至debug目录下即可。
运行结果: