《VS2010(X64)&PCL点云库学习》Part 2 A simple test of PCL in MFC

《VS2010(X64)&PCL点云库学习》Part 2 A simple test of PCL in MFC                                                                            

本文主要介绍如何将PCL的控制台程序移植到MFC中,基本内容还是按照上一篇PCL配置博文来继续讲解的。

1、新建MFC程序

2、应用程序类型对话框中,勾选基于对话框,一直下一步,或者直接点击完成。

3、配置环境:主要包括添加include文件夹、lib文件夹和添加.lib库文件

(1)添加include文件夹

你可以把安装目录D:\Program Files\PCL 1.6.0\改成自己的安装目录  项目右击—>属性—>C/C++—>附加包含目录

Include:
D:\Program Files\PCL 1.6.0\3rdParty\Boost\include;D:\Program Files\PCL 1.6.0\3rdParty\Eigen\include;D:\Program Files\PCL 1.6.0\3rdParty\FLANN\include;D:\Program Files\PCL 1.6.0\3rdParty\Qhull\include;D:\Program Files\PCL 1.6.0\3rdParty\VTK\include\vtk-5.8;D:\Program Files\OpenNI\Include;D:\Program Files\PCL 1.6.0\include\pcl-1.6

(2)添加bin文件夹

项目右击—>属性—>链接器—>常规—>附加库目录

<strong><span style="color:#ff0000;">lib:——注意OpenNI\Lib64</span></strong>
D:\Program Files\PCL 1.6.0\3rdParty\Boost\lib;D:\Program Files\PCL 1.6.0\3rdParty\Qhull\lib;D:\Program Files\PCL 1.6.0\3rdParty\FLANN\lib;D:\Program Files\PCL 1.6.0\3rdParty\VTK\lib\vtk-5.8;D:\Program Files\PCL 1.6.0\lib;D:\Program Files\OpenNI\Lib64


(3)添加.lib库文件

dubug模式,链接器->输入->附加依赖项 添加(注意和Lib文件夹下的.lib文件比对,一般后缀带_debug和_gd的为调试模式):

opengl32.lib
pcl_kdtree_debug.lib
pcl_io_debug.lib
pcl_search_debug.lib
pcl_segmentation_debug.lib
pcl_apps_debug.lib
pcl_features_debug.lib
pcl_filters_debug.lib
pcl_visualization_debug.lib
pcl_common_debug.lib
flann_cpp_s-gd.lib
libboost_system-vc100-mt-gd-1_47.lib
libboost_filesystem-vc100-mt-gd-1_47.lib
libboost_thread-vc100-mt-gd-1_47.lib
libboost_date_time-vc100-mt-gd-1_47.lib
libboost_iostreams-vc100-mt-gd-1_47.lib
vtkalglib-gd.lib
vtkCharts-gd.lib
vtkCommon-gd.lib
vtkDICOMParser-gd.lib
vtkexoIIc-gd.lib
vtkexpat-gd.lib
vtkFiltering-gd.lib
vtkfreetype-gd.lib
vtkftgl-gd.lib
vtkGenericFiltering-gd.lib
vtkGeovis-gd.lib
vtkGraphics-gd.lib
vtkhdf5-gd.lib
vtkHybrid-gd.lib
vtkImaging-gd.lib
vtkInfovis-gd.lib
vtkIO-gd.lib
vtkjpeg-gd.lib
vtklibxml2-gd.lib
vtkmetaio-gd.lib
vtkNetCDF-gd.lib
vtkNetCDF_cxx-gd.lib
vtkpng-gd.lib
vtkproj4-gd.lib
vtkRendering-gd.lib
vtksqlite-gd.lib
vtksys-gd.lib
vtktiff-gd.lib
vtkverdict-gd.lib
vtkViews-gd.lib
vtkVolumeRendering-gd.lib
vtkWidgets-gd.lib
vtkzlib-gd.lib

(4)修改平台为活动(x64),此步很关键,不然64位机没法编译通过。

4、添加代码

(1)添加基本的include文件相关的全局变量以及部分代码的修改

// PCL_MFCDlg.cpp : 实现文件
//

#include "stdafx.h"
#include "PCL_MFC.h"
#include "PCL_MFCDlg.h"
#include "afxdialogex.h"
#undef min 										//新加代码//
#undef max 										//新加代码//

//pcl
#include <pcl/visualization/cloud_viewer.h>
#include <iostream>
#include <pcl/io/io.h>
#include <pcl/io/pcd_io.h>
//#ifdef _DEBUG 											//注释掉//
//#define new DEBUG_NEW 										//注释掉//
//#endif												 //注释掉//
using namespace pcl;										//新加代码//
// 用于应用程序“关于”菜单项的 CAboutDlg 对话框

int user_data;
void viewerOneOff (pcl::visualization::PCLVisualizer& viewer)
{
	viewer.setBackgroundColor (1.0, 0.5, 1.0);
	pcl::PointXYZ o;
	o.x = 1.0;
	o.y = 0;
	o.z = 0;
	viewer.addSphere (o, 0.25, "sphere", 0);
	std::cout << "i only run once" << std::endl;

}

void viewerPsycho (pcl::visualization::PCLVisualizer& viewer)
{
	static unsigned count = 0;
	std::stringstream ss;
	ss << "Once per viewer loop: " << count++;
	viewer.removeShape ("text", 0);
	viewer.addText (ss.str(), 200, 300, "text", 0);
	//FIXME: possible race condition here:
	user_data++;
}

// 用于应用程序“关于”菜单项的 CAboutDlg 对话框

class CAboutDlg : public CDialogEx……//后面是MFC自动生成的函数

(2)在资源视图中的主对话框视图中,拖入按钮控件,caption设置为TestPCL,ID设置为IDC_TEST。

(3)设置完毕后,双击按钮,会回到PCL_MFCDlg.cpp文件中,光标定位到函数CPCL_MFCDlg::OnBnClickedTest()。添加源代码,此处的代码是第一篇文章的源码,只有最后一句稍作修改。

void CPCL_MFCDlg::OnBnClickedTest()
{
	// TODO: 在此添加控件通知处理程序代码
	pcl::PointCloud<pcl::PointXYZRGBA>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZRGBA>);
	pcl::io::loadPCDFile ("bridge2.pcd", *cloud);
	pcl::visualization::CloudViewer viewer("Cloud Viewer");
	//showCloud函数是同步的,在此处等待直到渲染显示为止
	viewer.showCloud(cloud);
	//该注册函数在可视化时只调用一次
	viewer.runOnVisualizationThreadOnce (viewerOneOff);
	//该注册函数在渲染输出时每次都调用
	viewer.runOnVisualizationThread (viewerPsycho);
	while (!viewer.wasStopped ())
	{
		//在此处可以添加其他处理
		user_data++;
	}
	UpdateData(FALSE); //由cloud_viewer中的return 0; 改为UpdateData(FALSE);
}

5、调试运行:

小结:

1)将控制台程序转移到MFC中的基本步骤如上所示,基本的函数都没有太大的变化,只有很少的地方有改动;

2)MFC中的程序是可以调用控制台程序运行的,在功能上是一样的,只是界面上略有区别。

时间: 2024-10-11 05:41:35

《VS2010(X64)&PCL点云库学习》Part 2 A simple test of PCL in MFC的相关文章

《PCL点云库学习&amp;VS2010(X64)》Part 8 PCL1.72(VTK6.2.0)可视化例程

Part 8 PCL1.72(VTK6.2.0)可视化例程                                                                                                PCL1.72 VTK6.20 控制台程序 加入.props属性表文件 1.Cloud_Viewer Cloud_Viewer.cpp代码: #include <vtkAutoInit.h> VTK_MODULE_INIT(vtkRendering

Windows下安装PCL点云库

原文链接:http://blog.csdn.net/u012337034/article/details/38270109 简介: 在Windows下安装PCL点云库的方法大概有两种:其一,all-in-one-installer,这个只有两个版本1.5.1和1.6.0,而且顾名思义,安装方法极其简单,这里就不多做介绍了:其二,build PCL out of source,这里我们可以使用PCL的各种版本,而且随着PCL的更新,我们也可以不断的update.接下来我将会详细介绍如何独立安装PC

[PCL](1)PCL点云库安装

1.安装文件下载:官网,我还是比较喜欢别人编译好的安装包啊,哈哈. http://www.pointclouds.org/downloads/windows.html 2.傻瓜式安装(下面的依赖项都集成进来了) 写入环境变量,这个很不错,可选. 中间安装了Boost.VTK.Kinect驱动什么的.反正是一路下一步,当然我的机器是Win7系统,之前没有安装过PCL,比较纯净. 之后又单独安装了QT4.8.2的sdk. 3.测试 在安装目录下有share/doc/pcl-1.6/tutorials

PCL点云库:Kd树

Kd树按空间划分生成叶子节点,各个叶子节点里存放点数据,其可以按半径搜索或邻区搜索.PCL中的Kd tree的基础数据结构使用了FLANN以便可以快速的进行邻区搜索.FLANN is a library for performing fast approximate nearest neighbor searches in high dimensional spaces.下面是一个最基本的例子,只寻找一个最近点: #include <pcl/point_cloud.h> #include &l

PCL点云库中怎样读取指定的PCD文件,又一次命名,处理后保存到指定目录

我一直想把处理后的pcd文件重命名,然后放到指定的目录,尝试了好久最终做到了: 比方我想读取  "table_scene_lms400.pcd" 把它进行滤波处理,重命名为 "table_scene_lms400_filter.pcd" ,然后保存到  "C:\PCD_FILTER\"文件夹下. 基本的语句例如以下: <span style="font-family:Microsoft YaHei;font-size:14px;&

PCL点云库中如何读取指定的PCD文件,重新命名,处理后保存到指定文件夹

我一直想把处理后的pcd文件重命名,然后放到指定的文件夹,尝试了好久终于做到了: 比如我想读取  "table_scene_lms400.pcd" 把它进行滤波处理,重命名为 "table_scene_lms400_filter.pcd" ,然后保存到  "C:\PCD_FILTER\"目录下. 主要的语句如下: <span style="font-family:Microsoft YaHei;font-size:14px;&qu

Windows7系统下OpenCV2.4.4+PCL1.6.0+SSBA3.0+VS2010 IDE32环境下编译和安装以实现Sfm和PCL点云数据可视化

最近在学习<深入理解OpenCV:实用计算机视觉项目解析>一书的第三章和第四章时,遇到很多编译问题,书中又没有详细的讲解环境配置和搭建过程.经过多天的捉摸.调试.排错终于将两章的程序都调试成功了,先做个记录以备忘.概述的英文名为:<Mastering OpenCV with Practical Computer Vision Projects>. 一.开发环境概述 1.OpenCV版本:2.4.4: 2.PCL版本:1.6.0: 3.SSBA版本:3.0: 4.IDE版本:VS20

PCL中点云数据格式之间的转化

(1) 关于pcl::PCLPointCloud2::Ptr和pcl::PointCloud<pcl::PointXYZ>两中数据结构的区别 pcl::PointXYZ::PointXYZ ( float_x, float_y, float_z ) 区别: struct PCLPointCloud2 { PCLPointCloud2 () : header (), height (0), width (0), fields (), is_bigendian (false), point_ste

互联网的创举之云库与微信相结合

近日,够快网络科技又有大动作--将微信企业号与云库相结合,很好得利用的微信的PAAS平台来推广够快云库这一新推出的功能. 够快管理层对微信企业号一直不温不火的原因做了深入了解,他们认为之前国内的SAAS服务没有太火的原因,除了市场需要培养以外,很重要的一个原因是缺少一个具有公信力的PAAS平台.做为企业,最不愿意的就是在不同的应用之间来回切换帐号.现在,微信企业号解决了这个问题,对我们国家大力推进SAAS服务来说将是非常有意义的.云库与微信结合,具有两大好处: 1)学习成本大幅下降.因为做为商务