Pcl联合Qt显示点云

基于vs2022
勾选opengl,openglwidgets,并将widget控件提示为QVTKOpenGLNativeWidget
Qt_Pcls.h

#pragma once
#include <QtWidgets/QMainWindow>
#include "ui_Qt_Pcls.h"
#include <vtkGenericOpenGLRenderWindow.h>
#include <pcl/io/pcd_io.h>
#include <pcl/visualization/pcl_visualizer.h>
class Qt_Pcls : public QMainWindow
{Q_OBJECT
public:Qt_Pcls(QWidget* parent = nullptr);~Qt_Pcls();
private:Ui::Qt_PclsClass ui;std::vector<pcl::PointCloud<pcl::PointXYZ>::Ptr> cloud_vec;std::vector<int> cloud_index;pcl::PointCloud<pcl::PointXYZ> cloud;boost::shared_ptr<pcl::visualization::PCLVisualizer> viewer;int point_size = 10;
private slots:void on_pushButton_clicked();
};

Qt_Pcls.cpp


#include "Qt_Pcls.h"
Qt_Pcls::Qt_Pcls(QWidget* parent): QMainWindow(parent)
{ui.setupUi(this);viewer.reset(new pcl::visualization::PCLVisualizer("viewer", false));vtkNew<vtkGenericOpenGLRenderWindow> window;window->AddRenderer(viewer->getRendererCollection()->GetFirstRenderer());ui.qvtkwidget->setRenderWindow(window.Get());ui.qvtkwidget->update();
}
Qt_Pcls::~Qt_Pcls()
{}
void Qt_Pcls::on_pushButton_clicked()
{if (pcl::io::loadPCDFile<pcl::PointXYZ>("bunnys.pcd", cloud) == -1) //* load the file{qDebug() << "Couldn't read pcd file  \n";return;}int size = static_cast<int>(cloud.size());viewer.reset(new pcl::visualization::PCLVisualizer("viewer", false));vtkNew<vtkGenericOpenGLRenderWindow> window;window->AddRenderer(viewer->getRendererCollection()->GetFirstRenderer());ui.qvtkwidget->setRenderWindow(window.Get());viewer->addPointCloud<pcl::PointXYZ>(cloud.makeShared(), std::to_string(cloud_vec.size() - 1));viewer->setPointCloudRenderingProperties(pcl::visualization::PCL_VISUALIZER_POINT_SIZE, point_size, std::to_string(cloud_vec.size() - 1));viewer->resetCamera();ui.qvtkwidget->update();
}

基于qt6.8
并将widget控件提示为QVTKOpenGLNativeWidget
pclqt.pro

QT       += core gui opengl openglwidgets
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
CONFIG += c++17
SOURCES += \main.cpp \mainwindow.cpp
HEADERS += \mainwindow.h
FORMS += \mainwindow.ui
qnx: target.path = /tmp/$${TARGET}/bin
else: unix:!android: target.path = /opt/$${TARGET}/bin
!isEmpty(target.path): INSTALLS += target
DEFINES += BOOST_USE_WINDOWS_H NOMINMAX _CRT_SECURE_NO_DEPRECATE
QMAKE_CXXFLAGS += -fno-sanitize=all
QMAKE_CFLAGS += -fno-sanitize=all
QMAKE_CXXFLAGS -= /permissive-
PCL_ROOT        =   $$quote(D:/Program Files/PCL 1.14.0)
3rdParty_Qhull  =   $$quote(D:/Program Files/PCL 1.14.0/3rdParty/Qhull)
3rdParty_FLANN  =   $$quote(D:/Program Files/PCL 1.14.0/3rdParty/FLANN)
3rdParty_Boost  =   $$quote(D:/Program Files/PCL 1.14.0/3rdParty/Boost)
3rdParty_Eigen  =   $$quote(D:/Program Files/PCL 1.14.0/3rdParty/Eigen3)
3rdParty_VTK    =   $$quote(D:/Program Files/PCL 1.14.0/3rdParty/VTK Qt)
OpenNI_ROOT     =   $$quote(D:/Program Files/PCL 1.14.0/3rdParty/OpenNI2)
INCLUDEPATH += \$$PCL_ROOT/include/pcl-1.14 \$$3rdParty_Qhull/include \$$3rdParty_FLANN/include \$$3rdParty_Boost/include/boost-1_84 \$$3rdParty_Eigen/include/eigen3 \$$3rdParty_VTK/include/vtk-9.3\$$OpenNI_ROOT/Include
LIBS+= \-L$$PCL_ROOT/lib \-L$$3rdParty_Qhull/lib \-L$$3rdParty_FLANN/lib \-L$$3rdParty_Boost/lib \-L$$3rdParty_Eigen/lib \-L$$3rdParty_VTK/lib \-L$$OpenNI_ROOT/Lib
LIBS += -lOpenNI2
win32:CONFIG(release, debug|release): LIBS += \-lpcl_common \-lpcl_features \-lpcl_filters \-lpcl_io \-lpcl_io_ply \-lpcl_kdtree \-lpcl_keypoints \-lpcl_ml \-lpcl_octree \-lpcl_outofcore \-lpcl_people \-lpcl_recognition \-lpcl_registration \-lpcl_sample_consensus \-lpcl_search \-lpcl_segmentation \-lpcl_stereo \-lpcl_surface \-lpcl_tracking \-lpcl_visualization \--lvtkcgns-9.3 \-lvtkChartsCore-9.3 \-lvtkCommonColor-9.3 \-lvtkCommonComputationalGeometry-9.3 \-lvtkCommonCore-9.3 \-lvtkCommonDataModel-9.3 \-lvtkCommonExecutionModel-9.3 \-lvtkCommonMath-9.3 \-lvtkCommonMisc-9.3 \-lvtkCommonSystem-9.3 \-lvtkCommonTransforms-9.3 \-lvtkDICOMParser-9.3 \-lvtkDomainsChemistry-9.3 \-lvtkDomainsChemistryOpenGL2-9.3 \-lvtkdoubleconversion-9.3 \-lvtkexodusII-9.3 \-lvtkexpat-9.3 \-lvtkFiltersAMR-9.3 \-lvtkFiltersCellGrid-9.3 \-lvtkFiltersCore-9.3 \-lvtkFiltersExtraction-9.3 \-lvtkFiltersFlowPaths-9.3 \-lvtkFiltersGeneral-9.3 \-lvtkFiltersGeneric-9.3 \-lvtkFiltersGeometry-9.3 \-lvtkFiltersGeometryPreview-9.3 \-lvtkFiltersHybrid-9.3 \-lvtkFiltersHyperTree-9.3 \-lvtkFiltersImaging-9.3 \-lvtkFiltersModeling-9.3 \-lvtkFiltersParallel-9.3 \-lvtkFiltersParallelImaging-9.3 \-lvtkFiltersPoints-9.3 \-lvtkFiltersProgrammable-9.3 \-lvtkFiltersReduction-9.3 \-lvtkFiltersSelection-9.3 \-lvtkFiltersSMP-9.3 \-lvtkFiltersSources-9.3 \-lvtkFiltersStatistics-9.3 \-lvtkFiltersTensor-9.3 \-lvtkFiltersTexture-9.3 \-lvtkFiltersTopology-9.3 \-lvtkFiltersVerdict-9.3 \-lvtkfmt-9.3 \-lvtkfreetype-9.3 \-lvtkGeovisCore-9.3 \-lvtkgl2ps-9.3 \-lvtkglew-9.3 \-lvtkGUISupportQt-9.3 \-lvtkGUISupportQtQuick-9.3 \-lvtkGUISupportQtSQL-9.3 \-lvtkhdf5-9.3 \-lvtkhdf5_hl-9.3 \-lvtkImagingColor-9.3 \-lvtkImagingCore-9.3 \-lvtkImagingFourier-9.3 \-lvtkImagingGeneral-9.3 \-lvtkImagingHybrid-9.3 \-lvtkImagingMath-9.3 \-lvtkImagingMorphological-9.3 \-lvtkImagingSources-9.3 \-lvtkImagingStatistics-9.3 \-lvtkImagingStencil-9.3 \-lvtkInfovisCore-9.3 \-lvtkInfovisLayout-9.3 \-lvtkInteractionImage-9.3 \-lvtkInteractionStyle-9.3 \-lvtkInteractionWidgets-9.3 \-lvtkIOAMR-9.3 \-lvtkIOAsynchronous-9.3 \-lvtkIOCellGrid-9.3 \-lvtkIOCesium3DTiles-9.3 \-lvtkIOCGNSReader-9.3 \-lvtkIOChemistry-9.3 \-lvtkIOCityGML-9.3 \-lvtkIOCONVERGECFD-9.3 \-lvtkIOCore-9.3 \-lvtkIOEnSight-9.3 \-lvtkIOExodus-9.3 \-lvtkIOExport-9.3 \-lvtkIOExportGL2PS-9.3 \-lvtkIOExportPDF-9.3 \-lvtkIOFLUENTCFF-9.3 \-lvtkIOGeometry-9.3 \-lvtkIOHDF-9.3 \-lvtkIOImage-9.3 \-lvtkIOImport-9.3 \-lvtkIOInfovis-9.3 \-lvtkIOLegacy-9.3 \-lvtkIOLSDyna-9.3 \-lvtkIOMINC-9.3 \-lvtkIOMotionFX-9.3 \-lvtkIOMovie-9.3 \-lvtkIONetCDF-9.3 \-lvtkIOOggTheora-9.3 \-lvtkIOParallel-9.3 \-lvtkIOParallelXML-9.3 \-lvtkIOPLY-9.3 \-lvtkIOSegY-9.3 \-lvtkIOSQL-9.3 \-lvtkioss-9.3 \-lvtkIOTecplotTable-9.3 \-lvtkIOVeraOut-9.3 \-lvtkIOVideo-9.3 \-lvtkIOXML-9.3 \-lvtkIOXMLParser-9.3 \-lvtkjpeg-9.3 \-lvtkjsoncpp-9.3 \-lvtkkissfft-9.3 \-lvtklibharu-9.3 \-lvtklibproj-9.3 \-lvtklibxml2-9.3 \-lvtkloguru-9.3 \-lvtklz4-9.3 \-lvtklzma-9.3 \-lvtkmetaio-9.3 \-lvtknetcdf-9.3 \-lvtkogg-9.3 \-lvtkParallelCore-9.3 \-lvtkParallelDIY-9.3 \-lvtkpng-9.3 \-lvtkpugixml-9.3 \-lvtkRenderingAnnotation-9.3 \-lvtkRenderingCellGrid-9.3 \-lvtkRenderingContext2D-9.3 \-lvtkRenderingContextOpenGL2-9.3 \-lvtkRenderingCore-9.3 \-lvtkRenderingFreeType-9.3 \-lvtkRenderingGL2PSOpenGL2-9.3 \-lvtkRenderingHyperTreeGrid-9.3 \-lvtkRenderingImage-9.3 \-lvtkRenderingLabel-9.3 \-lvtkRenderingLICOpenGL2-9.3 \-lvtkRenderingLOD-9.3 \-lvtkRenderingOpenGL2-9.3 \-lvtkRenderingQt-9.3 \-lvtkRenderingSceneGraph-9.3 \-lvtkRenderingUI-9.3 \-lvtkRenderingVolume-9.3 \-lvtkRenderingVolumeOpenGL2-9.3 \-lvtkRenderingVtkJS-9.3 \-lvtksqlite-9.3 \-lvtksys-9.3 \-lvtkTestingRendering-9.3 \-lvtktheora-9.3 \-lvtktiff-9.3 \-lvtkverdict-9.3 \-lvtkViewsContext2D-9.3 \-lvtkViewsCore-9.3 \-lvtkViewsInfovis-9.3 \-lvtkViewsQt-9.3 \-lvtkWrappingTools-9.3 \-lvtkzlib-9.3
else:win32:CONFIG(debug, debug|release): LIBS += \-lpcl_commond \-lpcl_featuresd \-lpcl_filtersd \-lpcl_iod \-lpcl_io_plyd \-lpcl_kdtreed \-lpcl_keypointsd \-lpcl_mld \-lpcl_octreed \-lpcl_outofcored \-lpcl_peopled \-lpcl_recognitiond \-lpcl_registrationd \-lpcl_sample_consensusd \-lpcl_searchd \-lpcl_segmentationd \-lpcl_stereod \-lpcl_surfaced \-lpcl_trackingd \-lpcl_visualizationd \-lvtkcgns-9.3-gd \-lvtkChartsCore-9.3-gd \-lvtkCommonColor-9.3-gd \-lvtkCommonComputationalGeometry-9.3-gd \-lvtkCommonCore-9.3-gd \-lvtkCommonDataModel-9.3-gd \-lvtkCommonExecutionModel-9.3-gd \-lvtkCommonMath-9.3-gd \-lvtkCommonMisc-9.3-gd \-lvtkCommonSystem-9.3-gd \-lvtkCommonTransforms-9.3-gd \-lvtkDICOMParser-9.3-gd \-lvtkDomainsChemistry-9.3-gd \-lvtkDomainsChemistryOpenGL2-9.3-gd \-lvtkdoubleconversion-9.3-gd \-lvtkexodusII-9.3-gd \-lvtkexpat-9.3-gd \-lvtkFiltersAMR-9.3-gd \-lvtkFiltersCellGrid-9.3-gd \-lvtkFiltersCore-9.3-gd \-lvtkFiltersExtraction-9.3-gd \-lvtkFiltersFlowPaths-9.3-gd \-lvtkFiltersGeneral-9.3-gd \-lvtkFiltersGeneric-9.3-gd \-lvtkFiltersGeometry-9.3-gd \-lvtkFiltersGeometryPreview-9.3-gd \-lvtkFiltersHybrid-9.3-gd \-lvtkFiltersHyperTree-9.3-gd \-lvtkFiltersImaging-9.3-gd \-lvtkFiltersModeling-9.3-gd \-lvtkFiltersParallel-9.3-gd \-lvtkFiltersParallelImaging-9.3-gd \-lvtkFiltersPoints-9.3-gd \-lvtkFiltersProgrammable-9.3-gd \-lvtkFiltersReduction-9.3-gd \-lvtkFiltersSelection-9.3-gd \-lvtkFiltersSMP-9.3-gd \-lvtkFiltersSources-9.3-gd \-lvtkFiltersStatistics-9.3-gd \-lvtkFiltersTensor-9.3-gd \-lvtkFiltersTexture-9.3-gd \-lvtkFiltersTopology-9.3-gd \-lvtkFiltersVerdict-9.3-gd \-lvtkfmt-9.3-gd \-lvtkfreetype-9.3-gd \-lvtkGeovisCore-9.3-gd \-lvtkgl2ps-9.3-gd \-lvtkglew-9.3-gd \-lvtkGUISupportQt-9.3-gd \-lvtkGUISupportQtQuick-9.3-gd \-lvtkGUISupportQtSQL-9.3-gd \-lvtkhdf5-9.3-gd \-lvtkhdf5_hl-9.3-gd \-lvtkImagingColor-9.3-gd \-lvtkImagingCore-9.3-gd \-lvtkImagingFourier-9.3-gd \-lvtkImagingGeneral-9.3-gd \-lvtkImagingHybrid-9.3-gd \-lvtkImagingMath-9.3-gd \-lvtkImagingMorphological-9.3-gd \-lvtkImagingSources-9.3-gd \-lvtkImagingStatistics-9.3-gd \-lvtkImagingStencil-9.3-gd \-lvtkInfovisCore-9.3-gd \-lvtkInfovisLayout-9.3-gd \-lvtkInteractionImage-9.3-gd \-lvtkInteractionStyle-9.3-gd \-lvtkInteractionWidgets-9.3-gd \-lvtkIOAMR-9.3-gd \-lvtkIOAsynchronous-9.3-gd \-lvtkIOCellGrid-9.3-gd \-lvtkIOCesium3DTiles-9.3-gd \-lvtkIOCGNSReader-9.3-gd \-lvtkIOChemistry-9.3-gd \-lvtkIOCityGML-9.3-gd \-lvtkIOCONVERGECFD-9.3-gd \-lvtkIOCore-9.3-gd \-lvtkIOEnSight-9.3-gd \-lvtkIOExodus-9.3-gd \-lvtkIOExport-9.3-gd \-lvtkIOExportGL2PS-9.3-gd \-lvtkIOExportPDF-9.3-gd \-lvtkIOFLUENTCFF-9.3-gd \-lvtkIOGeometry-9.3-gd \-lvtkIOHDF-9.3-gd \-lvtkIOImage-9.3-gd \-lvtkIOImport-9.3-gd \-lvtkIOInfovis-9.3-gd \-lvtkIOLegacy-9.3-gd \-lvtkIOLSDyna-9.3-gd \-lvtkIOMINC-9.3-gd \-lvtkIOMotionFX-9.3-gd \-lvtkIOMovie-9.3-gd \-lvtkIONetCDF-9.3-gd \-lvtkIOOggTheora-9.3-gd \-lvtkIOParallel-9.3-gd \-lvtkIOParallelXML-9.3-gd \-lvtkIOPLY-9.3-gd \-lvtkIOSegY-9.3-gd \-lvtkIOSQL-9.3-gd \-lvtkioss-9.3-gd \-lvtkIOTecplotTable-9.3-gd \-lvtkIOVeraOut-9.3-gd \-lvtkIOVideo-9.3-gd \-lvtkIOXML-9.3-gd \-lvtkIOXMLParser-9.3-gd \-lvtkjpeg-9.3-gd \-lvtkjsoncpp-9.3-gd \-lvtkkissfft-9.3-gd \-lvtklibharu-9.3-gd \-lvtklibproj-9.3-gd \-lvtklibxml2-9.3-gd \-lvtkloguru-9.3-gd \-lvtklz4-9.3-gd \-lvtklzma-9.3-gd \-lvtkmetaio-9.3-gd \-lvtknetcdf-9.3-gd \-lvtkogg-9.3-gd \-lvtkParallelCore-9.3-gd \-lvtkParallelDIY-9.3-gd \-lvtkpng-9.3-gd \-lvtkpugixml-9.3-gd \-lvtkRenderingAnnotation-9.3-gd \-lvtkRenderingCellGrid-9.3-gd \-lvtkRenderingContext2D-9.3-gd \-lvtkRenderingContextOpenGL2-9.3-gd \-lvtkRenderingCore-9.3-gd \-lvtkRenderingFreeType-9.3-gd \-lvtkRenderingGL2PSOpenGL2-9.3-gd \-lvtkRenderingHyperTreeGrid-9.3-gd \-lvtkRenderingImage-9.3-gd \-lvtkRenderingLabel-9.3-gd \-lvtkRenderingLICOpenGL2-9.3-gd \-lvtkRenderingLOD-9.3-gd \-lvtkRenderingOpenGL2-9.3-gd \-lvtkRenderingQt-9.3-gd \-lvtkRenderingSceneGraph-9.3-gd \-lvtkRenderingUI-9.3-gd \-lvtkRenderingVolume-9.3-gd \-lvtkRenderingVolumeOpenGL2-9.3-gd \-lvtkRenderingVtkJS-9.3-gd \-lvtksqlite-9.3-gd \-lvtksys-9.3-gd \-lvtkTestingRendering-9.3-gd \-lvtktheora-9.3-gd \-lvtktiff-9.3-gd \-lvtkverdict-9.3-gd \-lvtkViewsContext2D-9.3-gd \-lvtkViewsCore-9.3-gd \-lvtkViewsInfovis-9.3-gd \-lvtkViewsQt-9.3-gd \-lvtkWrappingTools-9.3-gd \-lvtkzlib-9.3-gd \

mainwindow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <vtkGenericOpenGLRenderWindow.h>
#include <pcl/io/pcd_io.h>
#include <pcl/visualization/pcl_visualizer.h>
QT_BEGIN_NAMESPACE
namespace Ui {
class MainWindow;
}
QT_END_NAMESPACE
class MainWindow : public QMainWindow
{Q_OBJECT
public:MainWindow(QWidget *parent = nullptr);~MainWindow();std::vector<pcl::PointCloud<pcl::PointXYZ>::Ptr> cloud_vec;std::vector<int> cloud_index;pcl::PointCloud<pcl::PointXYZ> cloud;boost::shared_ptr<pcl::visualization::PCLVisualizer> viewer;int point_size = 5;
private slots:void on_pushButton_clicked();
private:Ui::MainWindow *ui;
};
#endif 

mainwindow.cpp

#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);viewer.reset(new pcl::visualization::PCLVisualizer("viewer", false));vtkNew<vtkGenericOpenGLRenderWindow> window;window->AddRenderer(viewer->getRendererCollection()->GetFirstRenderer());ui->qvtkwidget->setRenderWindow(window.Get());ui->qvtkwidget->update();
}
MainWindow::~MainWindow()
{delete ui;
}
void MainWindow::on_pushButton_clicked()
{if (pcl::io::loadPCDFile<pcl::PointXYZ>("./../../bunny.pcd", cloud) == -1) //* load the file{qDebug() << "Couldn't read pcd file  \n";return;}viewer.reset(new pcl::visualization::PCLVisualizer("viewer", false));vtkNew<vtkGenericOpenGLRenderWindow> window;window->AddRenderer(viewer->getRendererCollection()->GetFirstRenderer());ui->qvtkwidget->setRenderWindow(window.Get());viewer->addPointCloud<pcl::PointXYZ>(cloud.makeShared(), std::to_string(cloud_vec.size() - 1));viewer->setPointCloudRenderingProperties(pcl::visualization::PCL_VISUALIZER_POINT_SIZE, point_size, std::to_string(cloud_vec.size() - 1));viewer->resetCamera();ui->qvtkwidget->update();
}

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

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

相关文章

pip install transformers教程

直接pip install transformers会报错&#xff0c;报错内容如下&#xff1a; Collecting safetensors>0.3.1 (from transformers)Using cached safetensors-0.5.2.tar.gz (66 kB)Installing build dependencies ... doneGetting requirements to build wheel ... donePrepar…

【数据结构】基础知识

目录 1.1 什么是数据结构 1.2数据 1.3 逻辑结构 1.4 存储结构 1.4.1 顺序存储 1.4.2 链式存储 1.4.3 索引存储 1.4.4 散列存储 1.5 操作 1.1 什么是数据结构 数据的逻辑结构以及存储操作 数据结构没有那么复杂&#xff0c;它就教会你一件事&#xff1a;如何更有效的…

【Rust】变量与可变性

目录 思维导图 1. 变量与可变性 1.1 不可变性 1.2 可变性 2. 常量 2.1 定义与特性 3. 变量遮蔽&#xff08;shadowing) 3.1 影子机制 3.2 遮蔽与可变性的区别 4.示例 4.1 变量和可变性示例 4.2 可变变量示例&#xff1a; 4.3 常量示例&#xff1a; 4.4 遮蔽示例&a…

第27章 汇编语言--- 设备驱动开发基础

汇编语言是低级编程语言的一种&#xff0c;它与特定的计算机架构紧密相关。在设备驱动开发中&#xff0c;汇编语言有时用于编写性能关键的部分或直接操作硬件&#xff0c;因为它是接近机器语言的代码&#xff0c;可以提供对硬件寄存器和指令集的直接访问。 要展开源代码详细叙…

Mycat读写分离搭建及配置超详细!!!

目录 一、Mycat产生背景二、Mycat介绍三、Mycat安装四、Mycat搭建读写分离1、 搭建MySQL数据库主从复制2、 基于mysql主从复制搭建MyCat读写分离 五、Mycat启动常见错误处理1、Caused by: io.mycat.config.util.ConfigException: SelfCheck### schema TESTDB refered by user u…

【6】Word:海名公司文秘❗

目录 题目 List.docx Word.docx List.docx和Word.docx 题目 List.docx 选中1/4全角空格复制→选中全部文本→开始→替换&#xff1a;粘贴将1/4全角空格 替换成 空格选中全部文本→插入→表格→将文本转化成表格→勾选和布局→自动调整→勾选 选中第一列&#xff0c;单机右键…

【Rust】引用与借用

目录 思维导图 1. 引用与借用的基本概念 1.1. 引用示例 2. 借用的规则 2.1. 可变借用示例 2.2. 借用的限制 3. 引用的生命周期 思维导图 1. 引用与借用的基本概念 引用的定义&#xff1a;引用是一种指向数据的指针&#xff0c;但与裸指针不同&#xff0c;Rust的引用在编…

贪心算法详细讲解(沉淀中)

文章目录 1. 什么是贪心算法&#xff1f;&#xff08;贪婪鼠目寸光&#xff09;经典例题1.1.1 找零问题1.1.2最小路径和1.1.3 背包问题 2.贪心算法的特点2.1 证明例1 3.学习贪心的方向心得体会 1. 什么是贪心算法&#xff1f;&#xff08;贪婪鼠目寸光&#xff09; 贪心策略&a…

【专题】2025年节日营销趋势洞察报告汇总PDF洞察(附原数据表)

原文链接&#xff1a; https://tecdat.cn/?p38813 在当今复杂多变且竞争激烈的消费市场环境下&#xff0c;节日营销已成为企业获取市场份额、提升品牌影响力的关键战略时机。我们深知深入洞察节日营销趋势对于企业决策的重要性。 本报告汇总基于对 2024 年多个关键消费节点及…

51c自动驾驶~合集46

我自己的原文哦~ https://blog.51cto.com/whaosoft/13050104 #世界模型会是L3自动驾驶的唯一解吗 三维空间占有率&#xff08;3D Occupancy&#xff09;预测的目的是预测三维空间中的每个体素是否被占有&#xff0c;如果被占有&#xff0c;则对应的体素将被标记。3D Semant…

Linux-----线程操作(创建)

目录 创建线程 示例&#xff1a; 创建线程 #include <pthread.h>/*** 创建一个新线程* * pthread_t *thread: 指向线程标识符的指针,线程创建成功时,用于存储新创建线程的线程标识符* const pthread_attr_t *attr: pthead_attr_t结构体,这个参数可以用来设置线程的属性…

华三S6520交换机配置console和ssh

目录 一、实验目的 二、实验设备 三、实验拓扑图 四、实验步骤 1、console用户名和密码 2、ssh用户名和密码 3.配置系统时间 一、实验目的 实现对华三 S6520 交换机的 console 本地登录和 ssh 远程登录配置,确保能够通过 console 线在本地进行管理,并使用 SSH 协议进…

Vue3组件设计模式:高可复用性组件开发实战

Vue3组件设计模式:高可复用性组件开发实战 一、前言 在Vue3中&#xff0c;组件设计和开发是非常重要的&#xff0c;它直接影响到应用的可维护性和可复用性。本文将介绍如何利用Vue3组件设计模式来开发高可复用性的组件&#xff0c;让你的组件更加灵活和易于维护。 二、单一职责…

Windows 上安装 PostgreSQL

在Windows操作系统上安装PostgreSQL数据库的步骤如下&#xff1a; 准备工作&#xff1a; 确认操作系统版本&#xff1a;确保您的Windows操作系统版本支持最新的PostgreSQL安装包。通常&#xff0c;PostgreSQL支持Windows 7及更高版本的操作系统。下载PostgreSQL安装包&#xff…

c语言 --- 字符串

创建字符串 1. 使用字符数组创建字符串 #include <stdio.h>int main() {char str[20] "Hello, world!";str[0] h; // 修改字符串的第一个字符printf("%s\n", str); // 输出&#xff1a;hello, world!return 0; }解释&#xff1a; 数组大小 20 表…

1月13日学习

[HITCON 2017]SSRFme 直接给了源代码&#xff0c;题目名称还是ssrf&#xff0c;那么该题大概率就是SSRF的漏洞&#xff0c;进行代码审计。 <?php// 检查是否存在 HTTP_X_FORWARDED_FOR 头&#xff0c;如果存在&#xff0c;则将其拆分为数组&#xff0c;并将第一个 IP 地址…

linux RT-Preempt spin lock实现

一、spin_lock概述 Spinlock是linux内核中常用的一种互斥锁机制&#xff0c;和mutex不同&#xff0c;当无法持锁进入临界区的时候&#xff0c;当前执行线索不会阻塞&#xff0c;而是不断的自旋等待该锁释放。正因为如此&#xff0c;自旋锁也是可以用在中断上下文的。也正是因为…

设计模式-工厂模式/抽象工厂模式

工厂模式 定义 定义一个创建对象的接口&#xff0c;让子类决定实列化哪一个类&#xff0c;工厂模式使一个类的实例化延迟到其子类&#xff1b; 工厂方法模式是简单工厂模式的延伸。在工厂方法模式中&#xff0c;核心工厂类不在负责产品的创建&#xff0c;而是将具体的创建工作…

网络安全的学习路径 (包括资源)快速学习

网络安全是一个多学科领域&#xff0c;涉及到技术、管理和法律等方面的知识。以下是详细的网络安全学习路径&#xff0c;从入门到高级&#xff0c;为你提供清晰的学习方向。 第一阶段&#xff1a;入门基础 在这阶段&#xff0c;你需要掌握基础的计算机知识和网络安全的基本概念…

C++ 文字识别OCR

一.引言 文字识别&#xff0c;也称为光学字符识别&#xff08;Optical Character Recognition, OCR&#xff09;&#xff0c;是一种将不同形式的文档&#xff08;如扫描的纸质文档、PDF文件或数字相机拍摄的图片&#xff09;中的文字转换成可编辑和可搜索的数据的技术。随着技…