六、在Qt下通过PCL在VTK9.3.0下显示自己的pcd点云文件

前几天刚整理好VTK8.2.0,发现我们的项目使用的PCL自带的VTK是9.3.0的,脸黑了快
VTK8.2.0可参考该篇博文:五、在Qt下加载QVTKWidget控件(VTK8.2.0),生成Visual Studio项目,显示点云(C++)
没办法,重新搞下VTK9.3.0

区别:VTK8.2.0采用的是拖拽QVTKWidget控件进行相应的操作;
VTK9.3.0把这个控件给取消掉了,但是封装了QVTKOpenGLNativeWidget类,该类是一个自定义控件,继承了OpenGL Widget控件。使用的时候,需要拖拽一个OpenGL Widget控件然后提升为QVTKOpenGLNativeWidget即可;可以看出VTK官网是提倡用户进行自定义控件的~~

一、下载解压VTK9.3.0

我下载的是v9.3.0
在这里插入图片描述
老规矩,VTK-9.3.0-src存放源码,将下载好的源码文件解压到这里
VTK-9.3.0-build用于ALL_BUILD的时候存放路径
VTK-9.3.0-install-release用于INSTALL的时候存放路径
我只需要release不需要debug

在这里插入图片描述

附加其他内容: 既需要release又需要用到debug的操作如下:
多创建一个文件夹VTK-9.3.0-install-debug,CMake的时候build路径选择VTK-9.3.0-install-debug
1,ALL_BUILD Release x64
2,INSTALL Release
运行完之后,将VTK-9.3.0-install-debug内容剪切到VTK-9.3.0-install-release
这算是最终的Release的内容 然后重复操作再次
1,ALL_BUILD Debugx64
2,INSTALL Debug
运行完之后,VTK-9.3.0-install-debug文件夹下的内容就是最终的Debug的内容

二、CMake编译下VTK9.3.0

选好源码文件位置(E:/VTK9.3.0/VTK-9.3.0-src)和build文件位置(E:/VTK9.3.0/VTK-9.3.0-build),直接Configure一下
在这里插入图片描述

1,CMAKE_INSTALL_PREFIX

选择VTK编译之后的库存放的位置,E:/VTK9.3.0/VTK-9.3.0-install-release/
在这里插入图片描述

2,找到所有包含qt的

①VTK下面的全都设置为WANT,且版本设置为5

在这里插入图片描述

②Ungrouped Entries下的Qt路径要确定下是不是自己的Qt路径

我的这里系统默认是的Anaconda下的Qt路径,需要修改一下
在这里插入图片描述

3,再次Configure,不暴红,全是白色的即可进行Generate和Open Project操作

三、Open Project

1,生成 —> 批生成

①选择ALL_BUILD Release x64生成

在这里插入图片描述
时间有点久,生成完之后记得把 **√** 给取消掉哈

②选择INSTALL Release x64生成

在这里插入图片描述
这个比较快

生成完成之后可以看到文件夹下(E:\VTK9.3.0\VTK-9.3.0-install-release)多出来四个文件夹
ps:VTK8.2.0会生成五个文件夹,多一个plugins
在这里插入图片描述

2,配置VTK属性表

新建一个Qt项目,例如:VTK9.3.0
新建一个属性表,例如:vtk930,用于配置VTK
新建一个属性表,例如:pcl_new_vtk,用于配置PCL

①VC++目录

包含目录E:\VTK9.3.0\VTK-9.3.0-install-release\include\vtk-9.3
在这里插入图片描述
库目录E:\VTK9.3.0\VTK-9.3.0-install-release\lib
在这里插入图片描述

②链接器 --> 输入 --> 附加依赖项

也就是文件夹E:\VTK9.3.0\VTK-9.3.0-install-release\lib里面所有lib文件的具体名称

在这里插入图片描述
敲黑板!!!小技巧:
打开cmd
输入命令:
E:
cd E:\VTK9.3.0\VTK-9.3.0-install-release\lib
DIR *.lib*/b>YY.txt // 语句的意思是将此路径下的所后缀是.lib*的文件(*.lib**为通配符,最后一个也有一个*哈),以名称(/b)的形式写入到YY.txt
在这里插入图片描述
YY.txt里面的内容复制到附加依赖项即可
在这里插入图片描述

vtkcgns-9.3.lib
vtkChartsCore-9.3.lib
vtkCommonColor-9.3.lib
vtkCommonComputationalGeometry-9.3.lib
vtkCommonCore-9.3.lib
vtkCommonDataModel-9.3.lib
vtkCommonExecutionModel-9.3.lib
vtkCommonMath-9.3.lib
vtkCommonMisc-9.3.lib
vtkCommonSystem-9.3.lib
vtkCommonTransforms-9.3.lib
vtkDICOMParser-9.3.lib
vtkDomainsChemistry-9.3.lib
vtkDomainsChemistryOpenGL2-9.3.lib
vtkdoubleconversion-9.3.lib
vtkexodusII-9.3.lib
vtkexpat-9.3.lib
vtkFiltersAMR-9.3.lib
vtkFiltersCellGrid-9.3.lib
vtkFiltersCore-9.3.lib
vtkFiltersExtraction-9.3.lib
vtkFiltersFlowPaths-9.3.lib
vtkFiltersGeneral-9.3.lib
vtkFiltersGeneric-9.3.lib
vtkFiltersGeometry-9.3.lib
vtkFiltersGeometryPreview-9.3.lib
vtkFiltersHybrid-9.3.lib
vtkFiltersHyperTree-9.3.lib
vtkFiltersImaging-9.3.lib
vtkFiltersModeling-9.3.lib
vtkFiltersParallel-9.3.lib
vtkFiltersParallelImaging-9.3.lib
vtkFiltersPoints-9.3.lib
vtkFiltersProgrammable-9.3.lib
vtkFiltersReduction-9.3.lib
vtkFiltersSelection-9.3.lib
vtkFiltersSMP-9.3.lib
vtkFiltersSources-9.3.lib
vtkFiltersStatistics-9.3.lib
vtkFiltersTensor-9.3.lib
vtkFiltersTexture-9.3.lib
vtkFiltersTopology-9.3.lib
vtkFiltersVerdict-9.3.lib
vtkfmt-9.3.lib
vtkfreetype-9.3.lib
vtkGeovisCore-9.3.lib
vtkgl2ps-9.3.lib
vtkglew-9.3.lib
vtkGUISupportQt-9.3.lib
vtkGUISupportQtQuick-9.3.lib
vtkGUISupportQtSQL-9.3.lib
vtkhdf5-9.3.lib
vtkhdf5_hl-9.3.lib
vtkImagingColor-9.3.lib
vtkImagingCore-9.3.lib
vtkImagingFourier-9.3.lib
vtkImagingGeneral-9.3.lib
vtkImagingHybrid-9.3.lib
vtkImagingMath-9.3.lib
vtkImagingMorphological-9.3.lib
vtkImagingSources-9.3.lib
vtkImagingStatistics-9.3.lib
vtkImagingStencil-9.3.lib
vtkInfovisCore-9.3.lib
vtkInfovisLayout-9.3.lib
vtkInteractionImage-9.3.lib
vtkInteractionStyle-9.3.lib
vtkInteractionWidgets-9.3.lib
vtkIOAMR-9.3.lib
vtkIOAsynchronous-9.3.lib
vtkIOCellGrid-9.3.lib
vtkIOCesium3DTiles-9.3.lib
vtkIOCGNSReader-9.3.lib
vtkIOChemistry-9.3.lib
vtkIOCityGML-9.3.lib
vtkIOCONVERGECFD-9.3.lib
vtkIOCore-9.3.lib
vtkIOEnSight-9.3.lib
vtkIOExodus-9.3.lib
vtkIOExport-9.3.lib
vtkIOExportGL2PS-9.3.lib
vtkIOExportPDF-9.3.lib
vtkIOFLUENTCFF-9.3.lib
vtkIOGeometry-9.3.lib
vtkIOHDF-9.3.lib
vtkIOImage-9.3.lib
vtkIOImport-9.3.lib
vtkIOInfovis-9.3.lib
vtkIOIOSS-9.3.lib
vtkIOLegacy-9.3.lib
vtkIOLSDyna-9.3.lib
vtkIOMINC-9.3.lib
vtkIOMotionFX-9.3.lib
vtkIOMovie-9.3.lib
vtkIONetCDF-9.3.lib
vtkIOOggTheora-9.3.lib
vtkIOParallel-9.3.lib
vtkIOParallelXML-9.3.lib
vtkIOPLY-9.3.lib
vtkIOSegY-9.3.lib
vtkIOSQL-9.3.lib
vtkioss-9.3.lib
vtkIOTecplotTable-9.3.lib
vtkIOVeraOut-9.3.lib
vtkIOVideo-9.3.lib
vtkIOXML-9.3.lib
vtkIOXMLParser-9.3.lib
vtkjpeg-9.3.lib
vtkjsoncpp-9.3.lib
vtkkissfft-9.3.lib
vtklibharu-9.3.lib
vtklibproj-9.3.lib
vtklibxml2-9.3.lib
vtkloguru-9.3.lib
vtklz4-9.3.lib
vtklzma-9.3.lib
vtkmetaio-9.3.lib
vtknetcdf-9.3.lib
vtkogg-9.3.lib
vtkParallelCore-9.3.lib
vtkParallelDIY-9.3.lib
vtkpng-9.3.lib
vtkpugixml-9.3.lib
vtkRenderingAnnotation-9.3.lib
vtkRenderingCellGrid-9.3.lib
vtkRenderingContext2D-9.3.lib
vtkRenderingContextOpenGL2-9.3.lib
vtkRenderingCore-9.3.lib
vtkRenderingFreeType-9.3.lib
vtkRenderingGL2PSOpenGL2-9.3.lib
vtkRenderingHyperTreeGrid-9.3.lib
vtkRenderingImage-9.3.lib
vtkRenderingLabel-9.3.lib
vtkRenderingLICOpenGL2-9.3.lib
vtkRenderingLOD-9.3.lib
vtkRenderingOpenGL2-9.3.lib
vtkRenderingQt-9.3.lib
vtkRenderingSceneGraph-9.3.lib
vtkRenderingUI-9.3.lib
vtkRenderingVolume-9.3.lib
vtkRenderingVolumeOpenGL2-9.3.lib
vtkRenderingVtkJS-9.3.lib
vtksqlite-9.3.lib
vtksys-9.3.lib
vtkTestingRendering-9.3.lib
vtktheora-9.3.lib
vtktiff-9.3.lib
vtkverdict-9.3.lib
vtkViewsContext2D-9.3.lib
vtkViewsCore-9.3.lib
vtkViewsInfovis-9.3.lib
vtkViewsQt-9.3.lib
vtkWrappingTools-9.3.lib
vtkzlib-9.3.lib

在这里插入图片描述

3,配置PCL属性表

①VC++目录

包含目录:
E:\Program Files\PCL 1.14.0\bin
E:\Program Files\PCL 1.14.0\3rdParty\Boost\include\boost-1_84
E:\Program Files\PCL 1.14.0\3rdParty\Eigen3\include\eigen3
E:\Program Files\PCL 1.14.0\3rdParty\OpenNI2\Include
E:\Program Files\PCL 1.14.0\3rdParty\FLANN\include
E:\Program Files\PCL 1.14.0\3rdParty\Qhull\include
E:\Program Files\PCL 1.14.0\include\pcl-1.14
发现没,没有配置PCL自带的VTK,这点要注意哈,因为之前的VTK配置过了,这里不适应PCL自带的VTK了
在这里插入图片描述
库目录
E:\Program Files\PCL 1.14.0\3rdParty\OpenNI2\Lib
E:\Program Files\PCL 1.14.0\3rdParty\Qhull\lib
E:\Program Files\PCL 1.14.0\3rdParty\FLANN\lib
E:\Program Files\PCL 1.14.0\3rdParty\Boost\lib
E:\Program Files\PCL 1.14.0\lib
发现了吧,也没有配置PCL自带的VTK!
在这里插入图片描述

②链接器 --> 输入 --> 附加依赖项

也就是你安装的PCL所在文件夹E:\Program Files\PCL 1.14.0\lib里面所有lib文件的具体名称
在这里插入图片描述

配置VTK属性表中有所介绍,这里就不再赘述了,

在这里插入图片描述
在这里插入图片描述

vtkcgns-9.3.lib
vtkChartsCore-9.3.lib
vtkCommonColor-9.3.lib
vtkCommonComputationalGeometry-9.3.lib
vtkCommonCore-9.3.lib
vtkCommonDataModel-9.3.lib
vtkCommonExecutionModel-9.3.lib
vtkCommonMath-9.3.lib
vtkCommonMisc-9.3.lib
vtkCommonSystem-9.3.lib
vtkCommonTransforms-9.3.lib
vtkDICOMParser-9.3.lib
vtkDomainsChemistry-9.3.lib
vtkDomainsChemistryOpenGL2-9.3.lib
vtkdoubleconversion-9.3.lib
vtkexodusII-9.3.lib
vtkexpat-9.3.lib
vtkFiltersAMR-9.3.lib
vtkFiltersCellGrid-9.3.lib
vtkFiltersCore-9.3.lib
vtkFiltersExtraction-9.3.lib
vtkFiltersFlowPaths-9.3.lib
vtkFiltersGeneral-9.3.lib
vtkFiltersGeneric-9.3.lib
vtkFiltersGeometry-9.3.lib
vtkFiltersGeometryPreview-9.3.lib
vtkFiltersHybrid-9.3.lib
vtkFiltersHyperTree-9.3.lib
vtkFiltersImaging-9.3.lib
vtkFiltersModeling-9.3.lib
vtkFiltersParallel-9.3.lib
vtkFiltersParallelImaging-9.3.lib
vtkFiltersPoints-9.3.lib
vtkFiltersProgrammable-9.3.lib
vtkFiltersReduction-9.3.lib
vtkFiltersSelection-9.3.lib
vtkFiltersSMP-9.3.lib
vtkFiltersSources-9.3.lib
vtkFiltersStatistics-9.3.lib
vtkFiltersTensor-9.3.lib
vtkFiltersTexture-9.3.lib
vtkFiltersTopology-9.3.lib
vtkFiltersVerdict-9.3.lib
vtkfmt-9.3.lib
vtkfreetype-9.3.lib
vtkGeovisCore-9.3.lib
vtkgl2ps-9.3.lib
vtkglew-9.3.lib
vtkGUISupportQt-9.3.lib
vtkGUISupportQtQuick-9.3.lib
vtkGUISupportQtSQL-9.3.lib
vtkhdf5-9.3.lib
vtkhdf5_hl-9.3.lib
vtkImagingColor-9.3.lib
vtkImagingCore-9.3.lib
vtkImagingFourier-9.3.lib
vtkImagingGeneral-9.3.lib
vtkImagingHybrid-9.3.lib
vtkImagingMath-9.3.lib
vtkImagingMorphological-9.3.lib
vtkImagingSources-9.3.lib
vtkImagingStatistics-9.3.lib
vtkImagingStencil-9.3.lib
vtkInfovisCore-9.3.lib
vtkInfovisLayout-9.3.lib
vtkInteractionImage-9.3.lib
vtkInteractionStyle-9.3.lib
vtkInteractionWidgets-9.3.lib
vtkIOAMR-9.3.lib
vtkIOAsynchronous-9.3.lib
vtkIOCellGrid-9.3.lib
vtkIOCesium3DTiles-9.3.lib
vtkIOCGNSReader-9.3.lib
vtkIOChemistry-9.3.lib
vtkIOCityGML-9.3.lib
vtkIOCONVERGECFD-9.3.lib
vtkIOCore-9.3.lib
vtkIOEnSight-9.3.lib
vtkIOExodus-9.3.lib
vtkIOExport-9.3.lib
vtkIOExportGL2PS-9.3.lib
vtkIOExportPDF-9.3.lib
vtkIOFLUENTCFF-9.3.lib
vtkIOGeometry-9.3.lib
vtkIOHDF-9.3.lib
vtkIOImage-9.3.lib
vtkIOImport-9.3.lib
vtkIOInfovis-9.3.lib
vtkIOIOSS-9.3.lib
vtkIOLegacy-9.3.lib
vtkIOLSDyna-9.3.lib
vtkIOMINC-9.3.lib
vtkIOMotionFX-9.3.lib
vtkIOMovie-9.3.lib
vtkIONetCDF-9.3.lib
vtkIOOggTheora-9.3.lib
vtkIOParallel-9.3.lib
vtkIOParallelXML-9.3.lib
vtkIOPLY-9.3.lib
vtkIOSegY-9.3.lib
vtkIOSQL-9.3.lib
vtkioss-9.3.lib
vtkIOTecplotTable-9.3.lib
vtkIOVeraOut-9.3.lib
vtkIOVideo-9.3.lib
vtkIOXML-9.3.lib
vtkIOXMLParser-9.3.lib
vtkjpeg-9.3.lib
vtkjsoncpp-9.3.lib
vtkkissfft-9.3.lib
vtklibharu-9.3.lib
vtklibproj-9.3.lib
vtklibxml2-9.3.lib
vtkloguru-9.3.lib
vtklz4-9.3.lib
vtklzma-9.3.lib
vtkmetaio-9.3.lib
vtknetcdf-9.3.lib
vtkogg-9.3.lib
vtkParallelCore-9.3.lib
vtkParallelDIY-9.3.lib
vtkpng-9.3.lib
vtkpugixml-9.3.lib
vtkRenderingAnnotation-9.3.lib
vtkRenderingCellGrid-9.3.lib
vtkRenderingContext2D-9.3.lib
vtkRenderingContextOpenGL2-9.3.lib
vtkRenderingCore-9.3.lib
vtkRenderingFreeType-9.3.lib
vtkRenderingGL2PSOpenGL2-9.3.lib
vtkRenderingHyperTreeGrid-9.3.lib
vtkRenderingImage-9.3.lib
vtkRenderingLabel-9.3.lib
vtkRenderingLICOpenGL2-9.3.lib
vtkRenderingLOD-9.3.lib
vtkRenderingOpenGL2-9.3.lib
vtkRenderingQt-9.3.lib
vtkRenderingSceneGraph-9.3.lib
vtkRenderingUI-9.3.lib
vtkRenderingVolume-9.3.lib
vtkRenderingVolumeOpenGL2-9.3.lib
vtkRenderingVtkJS-9.3.lib
vtksqlite-9.3.lib
vtksys-9.3.lib
vtkTestingRendering-9.3.lib
vtktheora-9.3.lib
vtktiff-9.3.lib
vtkverdict-9.3.lib
vtkViewsContext2D-9.3.lib
vtkViewsCore-9.3.lib
vtkViewsInfovis-9.3.lib
vtkViewsQt-9.3.lib
vtkWrappingTools-9.3.lib
vtkzlib-9.3.lib

在这里插入图片描述

4,配置系统环境变量

VTK:E:\VTK9.3.0\VTK-9.3.0-install-release\bin
PCL:E:\Program Files\PCL 1.14.0
在这里插入图片描述
在这里插入图片描述

四、QVTKOpenGLNativeWidget控件

拖拽一个openGLWidget控件
我的是QMainWindow,这里就添加一个菜单项进行打开pcd文件
在这里插入图片描述
右击openGLWidget控件,选择提升为
在这里插入图片描述
提升为QVTKOpenGLNativeWidget控件
基类名称:QOpenGLWidget
提升的类名称:QVTKOpenGLNativeWidget
头文件:qvtkopenglnativewidget.h
在这里插入图片描述
我们也可以在E:\VTK9.3.0\VTK-9.3.0-install-release\include\vtk-9.3下也找到这个头文件
在这里插入图片描述

最终控件的效果如下
在这里插入图片描述

五、通过PCL在QVTKOpenGLNativeWidget中显示PCD文件

我的测试项目结构如下
在这里插入图片描述

1,main.cpp

压根没动,默认即可

#include "VTK930.h"
#include <QtWidgets/QApplication>int main(int argc, char *argv[])
{QApplication a(argc, argv);VTK930 w;w.show();return a.exec();
}

2,VTK930.h

#pragma once#include <pcl/io/pcd_io.h>
#include <pcl/point_types.h>  //各种格式的点的头文件
#include <pcl/visualization/pcl_visualizer.h>
#include <pcl\io\pcd_io.h>
#include <pcl\visualization\pcl_visualizer.h>
#include <vtkGenericOpenGLRenderWindow.h>
#include <vtkRenderWindow.h>#include <QtWidgets/QMainWindow>#include "ui_VTK930.h"
#include "vtkAutoInit.h"                     // vtk初始化的方式
VTK_MODULE_INIT(vtkRenderingOpenGL2);        // 渲染
VTK_MODULE_INIT(vtkInteractionStyle);        // 相互做用方式
VTK_MODULE_INIT(vtkRenderingVolumeOpenGL2); 
#include <pcl/io/pcd_io.h>
#include <vtkGenericOpenGLRenderWindow.h>
#include <vtkOBJReader.h>
#include <vtkSTLReader.h>
#include <vtkSmartPointer.h>#include "vtkActor.h"
#include "vtkConeSource.h"
#include "vtkPolyDataMapper.h"
#include "vtkProperty.h"
#include "vtkRenderWindow.h"
#include "vtkRenderer.h"#include <QFileDialog.h>
#include <QVTKOpenGLNativeWidget.h>
#include <pcl/io/pcd_io.h>
#include <vtkActor.h>
#include <vtkGenericOpenGLRenderWindow.h>
#include <vtkNamedColors.h>
#include <vtkPolyDataMapper.h>
#include <vtkProperty.h>
#include <vtkRenderWindow.h>
#include <vtkRenderer.h>
#include <vtkSmartPointer.h>
#include <vtkSphereSource.h>#include <QDebug>
#include <QSurfaceFormat>#include "vtkAutoInit.h"class VTK930 : public QMainWindow {Q_OBJECTpublic:VTK930(QWidget *parent = nullptr);~VTK930();private:Ui::VTK930Class ui;// 点云数据存储pcl::PointCloud<pcl::PointXYZ>::Ptr cloud;boost::shared_ptr<pcl::visualization::PCLVisualizer> view;// 初始化vtk部件void initialVtkWidget();private slots:void onOpen();
};

3,VTK930.cpp

#include "VTK930.h"#include <QFileDialog.h>
#include <QVTKOpenGLNativeWidget.h>
#include <pcl/io/pcd_io.h>
#include <vtkActor.h>
#include <vtkGenericOpenGLRenderWindow.h>
#include <vtkNamedColors.h>
#include <vtkPolyDataMapper.h>
#include <vtkProperty.h>
#include <vtkRenderWindow.h>
#include <vtkRenderer.h>
#include <vtkSmartPointer.h>
#include <vtkSphereSource.h>#include <QDebug>
#include <QSurfaceFormat>#include "vtkAutoInit.h"VTK930::VTK930(QWidget *parent) : QMainWindow(parent) {ui.setupUi(this);initialVtkWidget();connect(ui.actionOpen, SIGNAL(triggered()), this, SLOT(onOpen()));
}VTK930::~VTK930() {}// 读取文本型和二进制型点云数据
void VTK930::onOpen() {// 读取pcd文件并显示pcl::PointCloud<pcl::PointXYZ>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZ>());  // 创建点云指针QString fileName = QFileDialog::getOpenFileName(this, "Open PointCloud", ".","Open PCD files(*.pcd)");if (fileName == "") return;pcl::io::loadPCDFile(fileName.toStdString(), *cloud);view->addPointCloud(cloud, "cloud");view->resetCamera();  // 视角ui.openGLWidget->update();
}void VTK930::initialVtkWidget() {vtkSmartPointer<vtkRenderer> renderer = vtkSmartPointer<vtkRenderer>::New();vtkSmartPointer<vtkGenericOpenGLRenderWindow> renderWindow =vtkSmartPointer<vtkGenericOpenGLRenderWindow>::New();renderWindow->AddRenderer(renderer);view.reset(new pcl::visualization::PCLVisualizer(renderer, renderWindow,"viewer", false));view->setupInteractor(ui.openGLWidget->interactor(),ui.openGLWidget->renderWindow());ui.openGLWidget->setRenderWindow(view->getRenderWindow());
}

六、运行效果展示

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

七、其他

经过这几天的学习,发现了很多问题,网上出现QTWidget控件的大都是VTK8.2.0版本之前的,而且VTK9.3.0与之前的版本确实有很大的差异,还得去花功夫认真研究学习

E:\VTK9.3.0\VTK-9.3.0-install-release\include\vtk-9.3下的QVTKOpenGLWindow.h
这个头文件就跟之前控件(QVTKWidget)所含有的函数方法有很多差异的地方,需要多研究学习,加油吧!!!
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/29441.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

玩转nRF52840-DK开发套件 (5) RTT打印调试日志

一、两种日志信息的输出方式 日志信息输出可以方便调试者观察程序运行状态&#xff0c;通常用串口 printf 来输出日志。nRF52840-DK也可以用仿真器 JLink 的 RTT Viewer 输出方式。 二、SDK_config.h配置 勾选相关项&#xff1a; 三、SDK_config.h配置 在主函数 main 中&#x…

给一家银行做的数据中台系统架构方案书(DAMM)招投标用,虽然有内定潜规则,但是方案都是要的,不一定就是价格低就能中标,毕竟是上百万以上的单子

目录 概述需求分析系统架构DAMM设计思路数据治理数据安全实施计划维护和运营 1. 概述 1.1 项目背景 在数字化转型的浪潮中&#xff0c;银行业面临着越来越多的数据挑战与机遇。为了更好地利用数据资产&#xff0c;提升服务质量和运营效率&#xff0c;建立一个高效、灵活的数…

HTML(7)——无语义的布局标签和字符实体

无语义的布局标签 作用&#xff1a;布局网页&#xff08;划分网页区域&#xff0c;摆放内容&#xff09; div&#xff1a;独占一行 span&#xff1a;不换行 字符实体 作用&#xff1a;在网页中显示预留字符 显示结果描述实体名称空格 <小于号<>大于号> 在代码中…

基于单片机的直流电机调速系统设计探讨

摘要 &#xff1a; 直流电动机制动性能与起动性能都较为理想&#xff0c;而且能够实现大范围的平滑调速&#xff0c;因而在电力拖动领域中的应用十分常见。 以控制角度分析&#xff0c;直流电机调速也成为交流拖动系统的重要基础 。 综合考虑直流电机转速测量和自动控制&#…

Ubuntu,Centos,Linux服务器安装Mellanox MCX653105A IB网卡HCA卡驱动

Mellanox 官方驱动下载地址 https://network.nvidia.com/products/infiniband-drivers/linux/mlnx_ofed/ 选择对应操作系统 官方链接速度比较慢&#xff0c;推荐个友商的下载地址 https://support.xfusion.com/support/#/zh/rack-servers/2288h-v5-pid-21872244/software …

R语言数据分析案例31-运用差分整合移动平均自回归模型对世界主要国家(俄罗斯)的污染物排放量进行研究预测

一、研究背景与意义 空气污染导致的环境恶化已经成为世界各国许多国家和地区发展受限的重要原因。空气污染物是由气态物质、挥发性物质、半挥发性物质和颗粒物质的混合物造成的&#xff0c;其中典型 的空气污染物就是人们生活中经常使用到的高频词汇雾霾。本文主要对其中的污染…

AI发展面临的问题? —— AI对创造的重新定义

一、AI的问题描述 AI与数据安全问题&#xff1a;随着AI技术的发展和应用&#xff0c;数据安全问题日益突出。AI模型训练依赖于大量数据&#xff0c;而这些数据中可能包含个人隐私、商业秘密等敏感信息。如果数据在采集、存储、使用过程中处理不当&#xff0c;可能导致数据泄露或…

了解 XML HttpRequest 及其在 Web 开发中的应用

XML HttpRequest&#xff08;XHR&#xff09; 技术是构建动态、响应式网站的关键。这项技术使得网页能在不重新加载整个页面的情况下与服务器进行数据交互&#xff0c;极大地优化了用户的交互体验。 定义 XML HttpRequest XML HttpRequest 是一种浏览器与服务器进行数据交换的…

Vue3 状态管理 - Pinia,超详细讲解!

前言&#xff1a; 哈喽&#xff0c;大家好&#xff0c;我是前端菜鸟的自我修养&#xff01;今天给大家分享【Vue3 状态管理 - Pinia】&#xff0c;超详细讲解&#xff01;并提供具体代码帮助大家深入理解&#xff0c;彻底掌握&#xff01;原创不易&#xff0c;如果能帮助到带大…

Spring Security——添加验证码

目录 项目总结 新建一个SpringBoot项目 VerifyCode&#xff08;生成验证码的工具类&#xff09; WebSecurityController控制器 VerifyCodeFilter&#xff08;自定义过滤器&#xff09; WebSecurityConfig配置类 login.html登录页面 项目测试 本项目是以上一篇文章的项目…

由GetSymbol说起,安全研究员定向水坑技战法梳理

0x00 概述 最近&#xff0c;一款开源的调试符号下载工具GetSymbol被发现存在后门&#xff0c;允许攻击者下发执行恶意代码。谷歌TAG声称&#xff0c;攻击者目前正在积极利用至少一个0Day漏洞来针对安全研究人员。 近年来&#xff0c;针对安全研究人员的定向水坑和社工攻击屡见…

Shell 输入/输出重定向

Shell 输入/输出重定向 在Shell编程中&#xff0c;输入/输出重定向是一项非常强大且常用的功能。它允许用户将命令的输出从一个地方&#xff08;通常是终端&#xff09;重定向到另一个地方&#xff08;比如文件&#xff09;&#xff0c;或者将文件的内容作为某个命令的输入。这…

C语言中的共用体union关键字

一、简介 在C语言中&#xff0c;union关键字用于定义一种特殊的数据结构&#xff0c;称为共用体&#xff08;Union&#xff09;或联合体。共用体允许您在相同的内存位置存储不同数据类型的变量。这意味着在任何给定时间&#xff0c;共用体变量中只有一个成员真正存储着有效的数…

Android的布局有哪些?

在Android开发中&#xff0c;布局&#xff08;Layout&#xff09;是用户界面&#xff08;UI&#xff09;设计的重要组成部分&#xff0c;它决定了屏幕上组件&#xff08;如按钮、文本框等&#xff09;的排列和显示方式。Android提供了多种布局方式&#xff0c;每种布局都有其独…

为什么动态代理接口中可以不加@Mapper注解

为什么动态代理接口中可以不加Mapper注解 如下图&#xff1a; 我们上面的UserMapper上面没有加Mapper注解&#xff0c;按道理来说UserMapper这个类应该是注入不到IOC容器里面的&#xff0c;但是为什么我们程序的运行效果仍然是正常的呢&#xff1f;这是因为你的启动类上加了m…

Excel 组内多列明细拼成一行

某表格有 1 个分组列和 2 个明细列。 ABC1ObjectNameInfo212AGggtz44456312AGggtr99987412AKkkio66543512ABbvgf66643612AVvvhg888765712AFffgt8786FGggtf23232596FXxxde44321610P23Cccvb554328711P23Vvvbj565656412P23Sswec898976413P23Llloiu343432 现在要把组内的多列明细…

七大黄金原油短线操作技巧与方法

1、研究K线组合 K线组合是几个交易日K线的衔接和联系&#xff0c;它无法掩饰地透露着黄金价格运行趋势的某种征兆。研究K线组合的深刻蕴含&#xff0c;感知其内在动意&#xff0c;把握黄金价格上涨征兆&#xff0c;可以大大提高上涨的概率。其实对许多诸如“强势整理”、“突破…

基于VTK9.3.0+Visual Studio2017 c++实现DICOM影像MPR多平面重建

开源库&#xff1a;VTK9.3.0 开发工具&#xff1a;Visual Studio2017 开发语言&#xff1a;C 实现过程&#xff1a; void initImageActor(double* Matrix, double* center, vtkSmartPointer<vtkImageCast> pImageCast,vtkSmartPointer<vtkImageReslice> imageRe…

在Android中实现网络请求

在Android开发中&#xff0c;网络请求是不可或缺的一部分&#xff0c;它涉及到从远程服务器获取数据&#xff0c;并在应用中进行展示。然而&#xff0c;实现网络请求并非易事&#xff0c;它涉及到多个技术难点、面试官的关注点以及如何在回答中展示吸引力。下面&#xff0c;我将…

Unity引擎UGUI上特效处理重叠和裁剪问题的多种解决办法

大家好&#xff0c;我是阿赵。   使用Unity引擎开发项目&#xff0c;使用UGUI做界面&#xff0c;经常会遇到需要把特效放在UI上&#xff0c;但UI本身和特效又需要有遮挡关系和裁剪效果。   之前我介绍了一下使用MaskableGraphic的方式把粒子特效渲染在UI上&#xff0c;把粒…