第一个PCL程序学习--直接在MS2010下编译
来源:互联网 发布:好吃的火锅 知乎 编辑:程序博客网 时间:2024/06/15 11:35
一直想学习PCL点云库,然后在此基础上做些关于Kinect的研究。今天终于可以慢慢琢磨了。
本次学习是根据官方的Tutorial进行的,只是编译是直接用MS2010进行的,没有弄CMake的文件。PCL Demo官网Tutorial
PS:习惯了添加库添加路径的方式了
#include <iostream>#include <pcl/filters/passthrough.h>#include <pcl/point_types.h>using namespace pcl;int main(){PointCloud<PointXYZ>::Ptr cloud(new PointCloud<PointXYZ>);PointCloud<PointXYZ>::Ptr cloud_filter(new PointCloud<PointXYZ>);// Fill in the cloud datacloud->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 filtering: " << std::endl;for (size_t i = 0; i < cloud->points.size(); ++i)std::cerr << "x: " << cloud->points[i].x << "\ty: " << cloud->points[i].y << "\tz: " << cloud->points[i].z<< std::endl;// Create the filtering objectPassThrough<PointXYZ> pass;pass.setInputCloud(cloud);pass.setFilterFieldName("z");pass.setFilterLimits(0.0, 1.0);pass.filter(*cloud_filter);std::cerr << "Cloud after filtering: " << std::endl;for (size_t i = 0; i < cloud_filter->points.size(); ++i)std::cerr << "x: " << cloud_filter->points[i].x << "\ty: " << cloud_filter->points[i].y << "\tz: " << cloud_filter->points[i].z<< std::endl;return 0;}官网代码没有改动。下面就是主要编译需要做的事了:
1、添加环境变量:新建了PCL_INCLUDE_DIRS --》 C:\Program Files\PCL 1.5.1\include\pcl-1.5
PCL_BOOST --》C:\Program Files\PCL 1.5.1\3rdParty\Boost\include
及 PCL_EIGENC --》C:\Program Files\PCL 1.5.1\3rdParty\Eigen\include
PCL_FLANN --》C:\Program Files\PCL 1.5.1\3rdParty\Flann\include
PCL_OPENNI --》C:\Program Files\OpenNI\Include 【因OPENNI以前就装了,为方便添加了此变量】
PCL_QHULL --》C:\Program Files\PCL 1.5.1\3rdParty\Qhull\include
PCL_VTK --》C:\Program Files\PCL 1.5.1\3rdParty\VTK\include
在将这些include路径放到变量“include”时没起作用,就用这种比较2的方法了,在工程编译时,只要出现哪个头文件打不开就添加$(***)到项目“附加包含目录”中
像本示例就添加了PCL_INCLUDE_DIRS PCL_BOOST PCL_EIGENC (之所以包含后两个主要是因为引用的pcl自己头文件中引用这些)
2、添加引用库:再在环境变量中添加PCL_LIB_DIRS --》C:\Program Files\PCL 1.5.1\lib
在项目属性-链接器-常规-附加库目录中添加$(PCL_LIB_DIRS)
同时本次示例用到的lib有(须添加到输入-附加依赖项中)pcl_common_debug.lib pcl_filters_debug.lib 第一个应该是有关PCL项目必须的,第二个应该是本示例所需要的
OK!该添加的都添加完了,可以编译了。当然还需在环境变量中编辑“path”,添加C:\Program Files\PCL 1.5.1\bin也可将lib相关的dll拷贝到了项目文件目录下 。
我想下次不同的例子,只要根据相关编译出错的提示,添加相应的PCL_** 以及相关lib就能够直接用MS2010编译了。
嘿嘿,最后给个程序运行图(不过貌似不像官方给的结果有些小不同,关键是所有z值都不在0.0-1.0范围内,所以都过滤掉了)
- 第一个PCL程序学习--直接在MS2010下编译
- 在MS2010下直接编译PCL程序可能遇到的LINK ERROR
- ROS_PCL_第一个PCL程序
- Opencv学习1: 在Linux下编译运行第一个opencv程序
- 编译第一个LINUX下 OPENCV 程序
- Linux下编译的第一个程序
- 在Cygwin下使用gcc编译第一个程序: Hello, World!
- friendarm 6410板子在windows的第一个程序 (下程序,在模拟dos终端编译汇编,C)
- PCL安装与第一个程序的运行
- CentOS下安装QT5和编译第一个程序
- Linux下编译并运行的第一个程序
- Java学习第一步:环境配置与编译第一个程序
- Java学习第一步:环境配置与编译第一个程序
- 学习DirectFB之:编译运行第一个DirectFB程序
- [技术学习]在Linux平台学习Windows开发技术(一)----编译第一个MFC程序
- 如何在QT中用cmake和qmake编译PCL程序
- 在vs2005下的第一个OpenGL程序。
- 在vs2005下的第一个OpenGL程序
- 一些软件设计的原则
- linux & android平台XGA分辨率玩捕鱼游戏屏闪解决方法
- 填报表用ajax实现关联单元格自动填充 http://www.quiee.com.cn/archives/3883/
- 学习堆与栈
- php引用传值
- 第一个PCL程序学习--直接在MS2010下编译
- Ext学习笔记1-基础概念
- 定投经验之谈
- ruby在windows环境下下载安装devkit
- Gvim配置(C++)IDE编程环境(windows下)
- hibernate学习笔记(一对一关联关系)
- SD功能移植
- Maven执行install时GPG Passphrase的解决办法
- Ext学习笔记2-面向对象