IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> Pcl1.8.1+vs2015+qt5.9.1+vtk8.0.0配置 -> 正文阅读

[C++知识库]Pcl1.8.1+vs2015+qt5.9.1+vtk8.0.0配置

Pcl1.8.1+vs2015+qt5.9.1+vtk8.0.0配置

记录学习,(千里之行,始于足下)
在完成了pcl1.8.1与vs2015的配置添加链接描述,但是由于pcl中vt为不完整模块,需要重新从源码编译。所以又重新学习了了qt,vs2015,vtk8.0.0编译,编译完成之后可以结合qt强大的可视化模块,对点云库pcl进行学习和开发。

1.安装前的准备

1.qt5.9.1安装
安装包位置:http://download.qt.io/archive/qt/
百度云:
链接:https://pan.baidu.com/s/1Fq8HVMr42JCDn1GQJLoaGA
提取码:la52
下载VtK8.0:
下载地址:https://gitlab.kitware.com/vtk/vtk/tree/v8.0.0
链接:https://pan.baidu.com/s/1L8heFB3wD-CQ0iwR3f9mDw
提取码:la53
下载cmake:
https://cmake.org/download/。
链接:https://pan.baidu.com/s/13GeACwIHgDIC1MHFEDUb2g
提取码:la54

标题2.qt5.9.1安装

由于vs2015已经安装完成,所以直接安装qt5.9.1(未安装vs2015,建议先安装vs2015)
下载后点击安装,一直点下一步就可以(qt安装还是比较简单的)。
在这里插入图片描述

编译器根据自己的vs版本选择相应的版本安装即可。
在这里插入图片描述

选择安装位置,建议D:/F:盘。
在这里插入图片描述

然后等待完成(安装完成之后配置环境变量,并且打开qt creator测试安装是否正常)。

3.VS 安装QT插件

需要用到qt-vsaddin-msvc2015-2.2.0。
3.1点击“工具 —-> 扩展和更新”
在这里插入图片描述

3.2点击“联机”—->“搜索qt”—->”下载”
在这里插入图片描述

等待下载安装,安装完成之后关闭重新打开VS2017,在菜单栏多了一栏(Qt VS Tools),并点击,并选择” option”
在这里插入图片描述

点击“Qt versions”,按照步骤加入qt路径。
在这里插入图片描述

完成后新建项目,会出现qt模块,即成功。

在这里插入图片描述

4.cmake编译VTK源码

打开cmake,选择D:\vtk8.0\source\vtk-v8.0.0为源码路径,新建build文件夹为编译路径。
在这里插入图片描述

点击condigure,选择vs2015版本,x64
在这里插入图片描述

勾选shared_libs,可以不用选择testing和examples。
在这里插入图片描述

勾选VTK_Group_Qt之后configure
在这里插入图片描述

在之后出现的选择qmake.exe文件,如图

在这里插入图片描述

填入()和5(代表qt版本)
在这里插入图片描述

之后继续configure
选择如下图
Qt5_DIR :D:/qt5.9.1/5.9.1/msvc2015_64/lib/cmake/Qt5
在这里插入图片描述

继续
在这里插入图片描述

继续configure,直到没有红色,然后generate
在这里插入图片描述

Generate完之后,选择gengerate旁边的Open Project,会自动打开vs2015。
选择Release和x64版本
在这里插入图片描述

右键ALL_BUILLD,点击生成,然后等待编译完成(可能需要一段时间)。
在这里插入图片描述

最后点击右键Instal,点击生成。
If(如果遇到Install失败,并弹出以下:错误 1 error MSB3073: 命令“setlocal "D:\Program Files\CMake\bin\cmake.exe" -DBUILD_TYPE=Debug -P cmake_install.cmake if %errorlevel% neq 0 goto :cmEnd:cmEndendlocal & call :cmErrorLevel %errorlevel% & goto :cmDone:cmErrorLevelexit /b %1:cmDoneif %errorlevel% neq 0 goto :VCEnd:VCEnd”已退出,代码为 1) {打开 C:\Program Files (x86)\Common Files\Microsoft Shared\MSEnv\ 找到 (VSLauncher.exe) 右键点击(VSLauncher.exe) 属性->兼容性->以管理员身份运行此程序 管理员身份打开vs2015 右键点击(Install) 仅用于项目->仅生成 然后生成成功 } Else { return }

在这里插入图片描述

然后以管理员身份打开vs2015,右键依次选择点击Install,仅用于项目,仅生成,然后生成成功。

将生成的D:\vtk8.0\new_build\bin\Release中的
在这里插入图片描述

以及D:\vtk8.0\new_build\lib\Release
在这里插入图片描述

复制到D:\qt5.9.1\5.9.1\msvc2015_64\plugins\designer中。

5.编译文件测试

左键开始
在这里插入图片描述

打开Designer,一般上上面为x32,下面为x64。
在这里插入图片描述

出现QVTKWidget控件。(release模式成功,但是debug模式编译的复制到D:\qt5.9.1\5.9.1\msvc2015_64\plugins\designer后,这个Designer会出现打不开的情况(不清楚原因))。
在这里插入图片描述

6.配置属性表

上一篇中新建了PCLRelease属性表并且配置完成。现在同样方法新建VTKrelease属性表。然后配置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
然后保存即可(最好能熟悉保存路径,方便下次使用)。

7.完整配置测试

新建qt vs项目
在这里插入图片描述

点击下一步
在这里插入图片描述

一直确定至项目创建。
打开属性管理器窗口,右键添加现有属性表,并且将刚创建的VTKRelease属性表和下一篇中创建的PCLRelease属性表分别引入。
在这里插入图片描述

打开解决方案窗口,双击ui文件,进入界面编辑。
在这里插入图片描述

编写设计界面如下,注意控件名称。
在这里插入图片描述

将以下代码写入QVisuallPcl.h

#ifndef PCLVISUALIZER_H
#define PCLVISUALIZER_H

#include <vtkAutoInit.h> 
VTK_MODULE_INIT(vtkRenderingOpenGL2);
VTK_MODULE_INIT(vtkInteractionStyle);

#include <QtWidgets/QMainWindow>
#include "ui_QVisualPcl.h"
#include <pcl/io/pcd_io.h>
#include <pcl/point_types.h>
#include <pcl/visualization/pcl_visualizer.h>
#include <QDebug>


class QVisualPcl : public QMainWindow
{
    Q_OBJECT

public:
     QVisualPcl(QWidget *parent = Q_NULLPTR);
	~QVisualPcl();

private:
    Ui::QVisualPclClass ui;

	pcl::PointCloud<pcl::PointXYZ>::Ptr cloud;
	boost::shared_ptr<pcl::visualization::PCLVisualizer> viewer;

	
	void initialVtkWidget();

	private slots:

		void onOpen();
	    void exit();
};

将以下代码写入QVisuallPcl.cpp

#include "QVisualPcl.h"
#include <QFileDialog>
#include <iostream>
#include <vtkRenderWindow.h>

QVisualPcl::QVisualPcl(QWidget *parent)
    : QMainWindow(parent)
{
    ui.setupUi(this);
	initialVtkWidget();
	connect(ui.actionOpen, &QAction::triggered, this, &QVisualPcl::onOpen);
	
	connect(ui.actionexit, &QAction::triggered, this, &QVisualPcl::exit);
	
}
QVisualPcl::~QVisualPcl()
{

}
void QVisualPcl::initialVtkWidget()
{
	cloud.reset(new pcl::PointCloud<pcl::PointXYZ>);
	cout << 123 << endl;
	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 QVisualPcl::onOpen()
{
	QString filename = QFileDialog::getOpenFileName(this, tr("Open Point Cloud"), "F:/", tr("OpenPointCloud(*.pcd)"));
	qDebug() << "1423" << endl;
	if (!filename.isEmpty())
	{
		qDebug() << "14523" << endl;
		std::string file_name = filename.toStdString();
		pcl::PCLPointCloud2 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, offset);
		if (data_type == 0)
		{
			pcl::io::loadPCDFile(filename.toStdString(), *cloud);

		}
		else if (data_type == 2)
		{
			pcl::PCDReader reader;
			reader.read<pcl::PointXYZ>(filename.toStdString(), *cloud);
		}
		viewer->updatePointCloud(cloud, "cloud");
		viewer->resetCamera();
		ui.qvtkWidget->update();
		qDebug() << "1423" << endl;

	}
}
void QVisualPcl::exit()
{
	this->close();
}

点击生成,调试,如果出现缺少VTK_xxxx_8.0.dll的问题,将C:\Program Files (x86)\VTK\bin中的所有dll文件复制至C:\Windows\System32,可解决问题。
在这里插入图片描述

右键点击Open,打开所选的pdb文件,即可显示(注意保存pdb文件的路径不要有中文)。
在这里插入图片描述

至此,完成整个配置过程,可以开始学习了。

参考链接

参考链接(很详细)
daguo的点云pcd文件(如果没有点云文件,提供一个点云文件:链接:https://pan.baidu.com/s/1iSMApxzvOv9tLfMVizEmaA 提取码:zfpk)
(记得更改一下程序中你的PCD点云文件的路径)点击运行程序。

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2021-10-16 19:28:07  更:2021-10-16 19:29:02 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/29 20:18:38-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码
数据统计