1. 仅下载了pcl1.6.0 然后点击安装
2.借助mfc 使用pcl自带的vtk进行显示
具体步骤:
1.创建mfc基于对话框的工程,配置pcl的属性
2. 头文件中定义如下:
#include <pcl/io/io.h>
#include <pcl/io/pcd_io.h>
#include <pcl/point_cloud.h>
#include <boost/thread/thread.hpp>
#include <pcl/visualization/cloud_viewer.h>
#include <pcl/visualization/pcl_visualizer.h>
#include <vtkRenderWindow.h>
#include <vtkRenderWindowInteractor.h>
using namespace std;
using namespace pcl;
private:
//视图窗口
vtkSmartPointer<vtkRenderWindow> m_win;
vtkSmartPointer<vtkRenderWindowInteractor> m_iren;
boost::shared_ptr<pcl::visualization::PCLVisualizer> viewer;
3.cpp中
首先将屏蔽掉 ,不屏蔽的话,会有关于new 的冲突
//#ifdef _DEBUG
//#define new DEBUG_NEW
//#endif
其次:
构造函数处:进行变量初始化
viewer = boost::shared_ptr<pcl::visualization::PCLVisualizer>(new pcl::visualization::PCLVisualizer("3D Viewer", false));
OnInitDialog函数中:
//==========================将viewer窗口结合到MFC图像控件上===========================
CRect rect;
m_iren = vtkRenderWindowInteractor::New();//重新申请地址
m_win = viewer->getRenderWindow();//获取viewer的句柄
GetDlgItem(IDC_SHOWVTK_STATIC)->GetClientRect(&rect);//获取图像控件的实际大小
m_win->SetSize(rect.right - rect.left, rect.bottom - rect.top);//将viewer大小设置为图像控件大小
m_win->SetParentId(GetDlgItem(IDC_SHOWVTK_STATIC)->m_hWnd);//将vtk窗口结合到MFC窗口中
viewer->resetCamera();
m_iren->SetRenderWindow(m_win);
viewer->createInteractor();//由于初始化设置为false,该处重新创建PCL风格的Interactor
m_win->Render();
//==============
添加一个按钮,进行响应加载pcd
pcl::PointCloud<pcl::PointXYZRGBA>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZRGBA>);
pcl::io::loadPCDFile("11.pcd", *cloud);
viewer->addPointCloud(cloud);
遇到的问题:
1. pcd_io.h 的头文件 中 const int nr_points = std::numeric_limits<int>::max ()); 提示 应输入标识符
改为:max处加了一个() 同理处理 min函数
const int nr_points = (std::numeric_limits<int>::max) ());
2.correspondence.h的类中添加如下头文件
#ifdef max
#undef max
#endif
参考:
https://blog.csdn.net/gordon_wei/article/details/85236064
例子:
https://blog.csdn.net/weixin_43341380/article/details/93972717
本文的代码: 使用vs2010开发,用vs2017打开的,未升级版本
我的代码:
https://mp.csdn.net/console/uploadResources?spm=1003.2018.3001.4314
编译目录写入文本
cmd控制台遍历目录文件名批量写入TXT
https://www.cnblogs.com/MorganMa/p/13958783.html

这篇博客介绍了如何在VS2010环境下,使用MFC结合PCL1.6.0和VTK库显示3D点云。主要步骤包括创建MFC工程,配置PCL属性,定义头文件和成员变量,以及在cpp文件中进行初始化和交互操作。在实现过程中遇到了关于`new`的冲突问题和`std::numeric_limits<int>::max()`的错误,通过修改源代码解决了这些问题。此外,还分享了参考链接和代码资源。

656

被折叠的 条评论
为什么被折叠?



