标签:
《VS2010(X64)&PCL点云库学习》Part 2 A simple test of PCL in MFC
本文主要介绍如何将PCL的控制台程序移植到MFC中,基本内容还是按照上一篇PCL配置博文来继续讲解的。
(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
项目右击—>属性—>链接器—>常规—>附加库目录:
<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
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
// 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自动生成的函数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);
}《VS2010(X64)&PCL点云库学习》Part 2 A simple test of PCL in MFC
标签:
原文地址:http://blog.csdn.net/sinat_24206709/article/details/51118977