一、搭建MFC框架

1、环境说明

本教程为vs2022,pcl1.12.1版本,其他版本自己进行适当修改,仅供参考。

2、方法步骤

(1)新建项目,选择“基于对话框”,然后点击“下一步”

pcl经典算法60例——(1)打开并显示点云-LMLPHP

 pcl经典算法60例——(1)打开并显示点云-LMLPHP

 

二、配置pcl环境

关于配置环境,网上很多教程,本人的“pcl专栏”里面也有详细说明,自己慢慢做,不要着急,最后配置完成后就可以进行下一步了。

PCL 1.12.1库目录、包含目录及输入lib库文件名称详细配置说明_大胡子大叔的博客-CSDN博客

pcl1.12.1重新安装boost库_大胡子大叔的博客-CSDN博客 

三、添加picture control和button,显示渐变色点云

pcl经典算法60例——(1)打开并显示点云-LMLPHP

 上图是本人写的一个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);

	}
}
07-01 00:53