【PCL点云处理】Win10+VS2015+PCL1.8.1+QT5.9.1+VTK8.0配置

首先感谢以下博主的经验,此外对于软件的安装就不过多介绍,主要讲解关键点,废话不多说。

https://blog.csdn.net/jepco1/article/details/80628026?utm_source=blogxgwz4

https://blog.csdn.net/qq_42570058/article/details/81989876?utm_source=blogxgwz8


1. VS2015和PCL1.8.1的安装

关于PCL1.8.1的安装,参考上一篇文章https://blog.csdn.net/qq_33676772/article/details/83273752。

 

2. QT5.9.1的安装

官网下载,正常安装,本人的安装路径:G:\Qt5.9.1

http://download.qt.io/archive/qt/5.9/

 

3. VTK8.0的安装

官网下载http://www.vtk.org/download/

此外,还要用到CMake工具,可以从https://cmake.org/download/ 免费下载,CMake下载后正常安装。

a. 解压VTK8.0,备用

b. CMake配置VTK for Qt编译环境:

创建VTK文件夹,在此文件夹下新建两个如下图所示的文件夹:vtk_src和vtk_bin,将解压的VTK8.0放入vtk_src文件夹下。

【PCL点云处理】Win10+VS2015+PCL1.8.1+QT5.9.1+VTK8.0配置_第1张图片

【PCL点云处理】Win10+VS2015+PCL1.8.1+QT5.9.1+VTK8.0配置_第2张图片

启动CMake,将路径写好,如下图,点击Configure

【PCL点云处理】Win10+VS2015+PCL1.8.1+QT5.9.1+VTK8.0配置_第3张图片

选 Visual Studio 14 2015 Win64,点击finish,等待配置完成。

【PCL点云处理】Win10+VS2015+PCL1.8.1+QT5.9.1+VTK8.0配置_第4张图片

选择BUILD_SHADRED_LIBS,如图:

【PCL点云处理】Win10+VS2015+PCL1.8.1+QT5.9.1+VTK8.0配置_第5张图片

安装目录:

如图勾选:

完成上述三个设置后,点击Configure,会报错,正常的现象,继续配置。

第1次配置完成后,会提示用户输入Qt5_DIR和VKT_QT_VERSION。

【PCL点云处理】Win10+VS2015+PCL1.8.1+QT5.9.1+VTK8.0配置_第6张图片

将Qt5_DIR修改为G:/Qt5.9.1/5.9.1/msvc2015_64/lib/cmake/Qt5。

将VKT_QT_VERSION设置为5。

可能还需要修改以下的路径,对应着修改:

【PCL点云处理】Win10+VS2015+PCL1.8.1+QT5.9.1+VTK8.0配置_第7张图片

再次点击Configure继续,中间可能出现红色文字的警告,不用管。

配置成功后,出现Configure done提示。

点击Generate生成工程。

【PCL点云处理】Win10+VS2015+PCL1.8.1+QT5.9.1+VTK8.0配置_第8张图片

c.  启动VS2015开始编译:

以管理员命令启动VS2015,然后VS2015中打开vtk_bin文件夹下的VTK.sln

【PCL点云处理】Win10+VS2015+PCL1.8.1+QT5.9.1+VTK8.0配置_第9张图片

【PCL点云处理】Win10+VS2015+PCL1.8.1+QT5.9.1+VTK8.0配置_第10张图片

打开工程后,选择Release和x64,默认启动项为ALL_BUILD,鼠标右键直接选择生成即可。

【PCL点云处理】Win10+VS2015+PCL1.8.1+QT5.9.1+VTK8.0配置_第11张图片

等了一段时间,然后就成功了,如果有失败,必须删除vtk_bin文件夹下所有文件,重头再来。

选INSTALL,右键点生成,很快就生成了

【PCL点云处理】Win10+VS2015+PCL1.8.1+QT5.9.1+VTK8.0配置_第12张图片

编译结果如下图:

【PCL点云处理】Win10+VS2015+PCL1.8.1+QT5.9.1+VTK8.0配置_第13张图片

d. 为Qt Designer安装QVTKWidget插件:

将下图所示的三个东西,复制到G:\Qt5.9.1\5.9.1\msvc2015_64\plugins\designer\目录。

启动Qt Designer,这里有两个版本,一般上面是32位,下面是64位。根据编译的版本选择。

【PCL点云处理】Win10+VS2015+PCL1.8.1+QT5.9.1+VTK8.0配置_第14张图片

在左侧widget box的最下方可以看到QVTKWidget说明插件安装成功。

【PCL点云处理】Win10+VS2015+PCL1.8.1+QT5.9.1+VTK8.0配置_第15张图片

e.配置VTK和PCLRelease64属性表:

PCLRelease64属性表参考上篇博客。

点击属性管理器,在Release|x64右击,添加新项目属性表,取名VTKRelease64,如下图:

【PCL点云处理】Win10+VS2015+PCL1.8.1+QT5.9.1+VTK8.0配置_第16张图片

双击VTK,弹出属性页,左侧选中VC++目录,右侧包含目录添加如下路径(根据自己的路径一一对应起来)。

右侧库目录添加如下路径(根据自己的路径一一对应起来)

左侧点击链接器,再点输入,右侧找到附加依赖项,添加如下依赖项(直接复制粘贴)

vtkalglib-8.0.lib
vtkChartsCore-8.0.lib
vtkCommonColor-8.0.lib
vtkCommonComputationalGeometry-8.0.lib
vtkCommonCore-8.0.lib
vtkCommonDataModel-8.0.lib
vtkCommonExecutionModel-8.0.lib
vtkCommonMath-8.0.lib
vtkCommonMisc-8.0.lib
vtkCommonSystem-8.0.lib
vtkCommonTransforms-8.0.lib
vtkDICOMParser-8.0.lib
vtkDomainsChemistry-8.0.lib
vtkDomainsChemistryOpenGL2-8.0.lib
vtkexoIIc-8.0.lib
vtkexpat-8.0.lib
vtkFiltersAMR-8.0.lib
vtkFiltersCore-8.0.lib
vtkFiltersExtraction-8.0.lib
vtkFiltersFlowPaths-8.0.lib
vtkFiltersGeneral-8.0.lib
vtkFiltersGeneric-8.0.lib
vtkFiltersGeometry-8.0.lib
vtkFiltersHybrid-8.0.lib
vtkFiltersHyperTree-8.0.lib
vtkFiltersImaging-8.0.lib
vtkFiltersModeling-8.0.lib
vtkFiltersParallel-8.0.lib
vtkFiltersParallelImaging-8.0.lib
vtkFiltersPoints-8.0.lib
vtkFiltersProgrammable-8.0.lib
vtkFiltersSelection-8.0.lib
vtkFiltersSMP-8.0.lib
vtkFiltersSources-8.0.lib
vtkFiltersStatistics-8.0.lib
vtkFiltersTexture-8.0.lib
vtkFiltersTopology-8.0.lib
vtkFiltersVerdict-8.0.lib
vtkfreetype-8.0.lib
vtkGeovisCore-8.0.lib
vtkgl2ps-8.0.lib
vtkglew-8.0.lib
vtkGUISupportQt-8.0.lib
vtkGUISupportQtSQL-8.0.lib
vtkhdf5-8.0.lib
vtkhdf5_hl-8.0.lib
vtkImagingColor-8.0.lib
vtkImagingCore-8.0.lib
vtkImagingFourier-8.0.lib
vtkImagingGeneral-8.0.lib
vtkImagingHybrid-8.0.lib
vtkImagingMath-8.0.lib
vtkImagingMorphological-8.0.lib
vtkImagingSources-8.0.lib
vtkImagingStatistics-8.0.lib
vtkImagingStencil-8.0.lib
vtkInfovisCore-8.0.lib
vtkInfovisLayout-8.0.lib
vtkInteractionImage-8.0.lib
vtkInteractionStyle-8.0.lib
vtkInteractionWidgets-8.0.lib
vtkIOAMR-8.0.lib
vtkIOCore-8.0.lib
vtkIOEnSight-8.0.lib
vtkIOExodus-8.0.lib
vtkIOExport-8.0.lib
vtkIOExportOpenGL2-8.0.lib
vtkIOGeometry-8.0.lib
vtkIOImage-8.0.lib
vtkIOImport-8.0.lib
vtkIOInfovis-8.0.lib
vtkIOLegacy-8.0.lib
vtkIOLSDyna-8.0.lib
vtkIOMINC-8.0.lib
vtkIOMovie-8.0.lib
vtkIONetCDF-8.0.lib
vtkIOParallel-8.0.lib
vtkIOParallelXML-8.0.lib
vtkIOPLY-8.0.lib
vtkIOSQL-8.0.lib
vtkIOTecplotTable-8.0.lib
vtkIOVideo-8.0.lib
vtkIOXML-8.0.lib
vtkIOXMLParser-8.0.lib
vtkjpeg-8.0.lib
vtkjsoncpp-8.0.lib
vtklibharu-8.0.lib
vtklibxml2-8.0.lib
vtklz4-8.0.lib
vtkmetaio-8.0.lib
vtkNetCDF-8.0.lib
vtknetcdf_c++.lib
vtkoggtheora-8.0.lib
vtkParallelCore-8.0.lib
vtkpng-8.0.lib
vtkproj4-8.0.lib
vtkRenderingAnnotation-8.0.lib
vtkRenderingContext2D-8.0.lib
vtkRenderingContextOpenGL2-8.0.lib
vtkRenderingCore-8.0.lib
vtkRenderingFreeType-8.0.lib
vtkRenderingGL2PSOpenGL2-8.0.lib
vtkRenderingImage-8.0.lib
vtkRenderingLabel-8.0.lib
vtkRenderingLOD-8.0.lib
vtkRenderingOpenGL2-8.0.lib
vtkRenderingQt-8.0.lib
vtkRenderingVolume-8.0.lib
vtkRenderingVolumeOpenGL2-8.0.lib
vtksqlite-8.0.lib
vtksys-8.0.lib
vtktiff-8.0.lib
vtkverdict-8.0.lib
vtkViewsContext2D-8.0.lib
vtkViewsCore-8.0.lib
vtkViewsInfovis-8.0.lib
vtkViewsQt-8.0.lib
vtkzlib-8.0.lib

配置好后,有两个属性表文件。

【PCL点云处理】Win10+VS2015+PCL1.8.1+QT5.9.1+VTK8.0配置_第17张图片

 

4. 安装Qt Visual Studio Tools扩展工具

在工具菜单中选择扩展和更新

【PCL点云处理】Win10+VS2015+PCL1.8.1+QT5.9.1+VTK8.0配置_第18张图片

在联机中选择Qt Visual Studio Tools安装。

安装成功后,菜单上会出现Qt VS Tools,点击Qt Options,如图设置。

【PCL点云处理】Win10+VS2015+PCL1.8.1+QT5.9.1+VTK8.0配置_第19张图片        

 

5. 点云可视化的实现(重点)

a. 打开VS2015,新建一个工程Qt GUI Application,命名PCLVisualizer,建好后对应文件如图:

【PCL点云处理】Win10+VS2015+PCL1.8.1+QT5.9.1+VTK8.0配置_第20张图片

【PCL点云处理】Win10+VS2015+PCL1.8.1+QT5.9.1+VTK8.0配置_第21张图片

b. 解决方案资源管理器中,双击下图UI文件

将QVTK拖进UI界面,调整大小,再上述菜单栏中依次输入File,按下回车确定,再分别输入Open回车、Exit回车确定,保存退出。

【PCL点云处理】Win10+VS2015+PCL1.8.1+QT5.9.1+VTK8.0配置_第22张图片

回到VS2015,右键上述UI文件,先编译。

【PCL点云处理】Win10+VS2015+PCL1.8.1+QT5.9.1+VTK8.0配置_第23张图片

在工程文件夹下出现一个ui_pclvisualizer.h的头文件,将此文件复制到上一层文件夹下。

【PCL点云处理】Win10+VS2015+PCL1.8.1+QT5.9.1+VTK8.0配置_第24张图片

【PCL点云处理】Win10+VS2015+PCL1.8.1+QT5.9.1+VTK8.0配置_第25张图片

c. 添加代码:

双击main.cpp:

#include "pclvisualizer.h"
#include 
 
int main(int argc, char *argv[])
{
	QApplication a(argc, argv);
	PCLVisualizer w;
	w.show();
	return a.exec();
}

双击pclvisualizer.cpp:

#include 
#include 
#include 
#include "pclvisualizer.h"
#include 
#pragma execution_character_set("utf-8")


PCLVisualizer::PCLVisualizer(QWidget *parent)
	: QMainWindow(parent)
{
	ui.setupUi(this);
	//初始化
	initialVtkWidget();
	//连接信号和槽

	connect(ui.actionOpen, &QAction::triggered, this, &PCLVisualizer::onOpen);
	connect(ui.actionExit, &QAction::triggered, this, &PCLVisualizer::exit);


}

PCLVisualizer::~PCLVisualizer()
{

}
void PCLVisualizer::initialVtkWidget()
{
	cloud.reset(new pcl::PointCloud);
	viewer.reset(new pcl::visualization::PCLVisualizer("viewer", false));
	viewer->addPointCloud(cloud, "cloud");

	ui.qvtkWidget->SetRenderWindow(viewer->getRenderWindow());
	viewer->setupInteractor(ui.qvtkWidget->GetInteractor(), ui.qvtkWidget->GetRenderWindow());
	ui.qvtkWidget->update();
}


//读取文本型和二进制型点云数据
void PCLVisualizer::onOpen()
{
	//只能打开PCD文件
	QString fileName = QFileDialog::getOpenFileName(this,
		tr("Open PointCloud"), ".",
		tr("Open PCD files(*.pcd)"));

	if (!fileName.isEmpty())
	{
		std::string file_name = fileName.toStdString();
		//sensor_msgs::PointCloud2 cloud2;
		pcl::PCLPointCloud2 cloud2;
		//pcl::PointCloud cloud2;
		Eigen::Vector4f origin;
		Eigen::Quaternionf orientation;
		int pcd_version;
		int data_type;
		unsigned int data_idx;
		int offset = 0;
		pcl::PCDReader rd;
		rd.readHeader(file_name, cloud2, origin, orientation, pcd_version, data_type, data_idx);

		if (data_type == 0)
		{
			pcl::io::loadPCDFile(fileName.toStdString(), *cloud);
		}
		else if (data_type == 2)
		{
			pcl::PCDReader reader;
			reader.read(fileName.toStdString(), *cloud);
		}

		viewer->updatePointCloud(cloud, "cloud");
		viewer->resetCamera();
		ui.qvtkWidget->update();
	}
}
void PCLVisualizer::exit()
{
	this->close();
}

双击pclvisualizer.h:

#ifndef PCLVISUALIZER_H
#define PCLVISUALIZER_H

#include  
VTK_MODULE_INIT(vtkRenderingOpenGL2);
VTK_MODULE_INIT(vtkInteractionStyle);

#include 
#include 
#include 
#include 
#include "ui_pclvisualizer.h"

class PCLVisualizer : public QMainWindow
{
	Q_OBJECT
public:
	PCLVisualizer(QWidget *parent = 0);
	~PCLVisualizer();

private:
	Ui::PCLVisualizerClass ui;
	//Ui::PCLVisualizerClass ui;
	//点云数据存储
	pcl::PointCloud::Ptr cloud;
	boost::shared_ptr viewer;

	//初始化vtk部件
	void initialVtkWidget();

	private slots:
	//创建打开槽
	void onOpen();
	void exit();
	//void setcolor();
};

#endif // PCLVISUALIZER_H

d. 添加属性表和修改项目属性:

代码添加完成后还是有很多红色下划线的报错,还要添加之前新建的两个属性表:

【PCL点云处理】Win10+VS2015+PCL1.8.1+QT5.9.1+VTK8.0配置_第26张图片

修改项目属性(这步很重要,很多博客都没有这一步,导致出现问题不知道怎么解决),调试,修改工作目录和环境的路径

【PCL点云处理】Win10+VS2015+PCL1.8.1+QT5.9.1+VTK8.0配置_第27张图片【PCL点云处理】Win10+VS2015+PCL1.8.1+QT5.9.1+VTK8.0配置_第28张图片【PCL点云处理】Win10+VS2015+PCL1.8.1+QT5.9.1+VTK8.0配置_第29张图片

【PCL点云处理】Win10+VS2015+PCL1.8.1+QT5.9.1+VTK8.0配置_第30张图片     【PCL点云处理】Win10+VS2015+PCL1.8.1+QT5.9.1+VTK8.0配置_第31张图片

 

6. 测试结果

依然使用上一篇博客用到的bunny.pcd文件来测试,文件下载地址:https://pan.baidu.com/s/1sJYz1QVZ09YSdKSmUos7fQ

VS2015调试,出现下图所示窗体。

【PCL点云处理】Win10+VS2015+PCL1.8.1+QT5.9.1+VTK8.0配置_第32张图片

单击File-->Open-->bunny.pcd,显示点云:

【PCL点云处理】Win10+VS2015+PCL1.8.1+QT5.9.1+VTK8.0配置_第33张图片

到此为止,配置就成功,本人配置了快一星期,中途好几次要放弃了,最终还是成功了,如果出现问题,很可能是路径的问题,记住一定要按照我写的对应的路径走,也希望我的经验对大家有帮助,有问题欢迎指正!

 

7. 后记

之前在用VTK7.0版本配置的时候,在编译的时候成功了,但是最后的程序调试时就会发生以下错误:

配置了几次都是一样的错误,所以我认为是VTK版本的问题,换成VTK8.0配置时就成功了。

你可能感兴趣的:(点云库)