一、搭建MFC框架
1、环境说明
本教程为vs2022,pcl1.12.1版本,其他版本自己进行适当修改,仅供参考。
2、方法步骤
(1)新建项目,选择“基于对话框”,然后点击“下一步”
二、配置pcl环境
关于配置环境,网上很多教程,本人的“pcl专栏”里面也有详细说明,自己慢慢做,不要着急,最后配置完成后就可以进行下一步了。
PCL 1.12.1库目录、包含目录及输入lib库文件名称详细配置说明_大胡子大叔的博客-CSDN博客
pcl1.12.1重新安装boost库_大胡子大叔的博客-CSDN博客
三、添加picture control和button,显示渐变色点云
上图是本人写的一个pcl的框架,第一个“打开点云”按钮就是这样的效果了
未完,待续……今天没时间了,不好意思了,
先把button1按钮里面的代码贴上吧
void CMFCPCLSHFDlg::OnBnClickedButton1()
{
// TODO: 在此添加控件通知处理程序代码
CString strFile = _T("");
CFileDialog dlgFile(TRUE, NULL, NULL, OFN_HIDEREADONLY, _T("Describe Files (*.pcd)|*.pcd|All Files (*.*)|*.*||"), NULL);
if (dlgFile.DoModal())
{
strFile = dlgFile.GetPathName();
//Cstring 转string
CString theCStr;
std::string STDStr(CW2A(strFile.GetString()));
pcl::PointCloud<pcl::PointXYZ>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZ>);
if (pcl::io::loadPCDFile<pcl::PointXYZ>(STDStr, *cloud) == -1)//*打开点云文件
{
AfxMessageBox(_T("读入点云数据失败"));
}
m_viewer->removeAllPointClouds();//将前一次点云移除
// 设置单一颜色
//pcl::visualization::PointCloudColorHandlerCustom<pcl::PointXYZ> color_h(pcd_src, 0, 255, 0);//点云为绿色
//按照z方向深度进行渲染(带渐变色)
pcl::visualization::PointCloudColorHandlerGenericField<pcl::PointXYZ> color_h(cloud, "z");
m_viewer->addPointCloud<pcl::PointXYZ >(cloud, color_h, "sample cloud");
m_viewer->addText("show cloud", 0, 20);
}
}