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,一经查实,立即删除!

相关文章

【数据结构】基础知识

目录 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…

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;让你的组件更加灵活和易于维护。 二、单一职责…

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;而是将具体的创建工作…

C++ 文字识别OCR

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

计算机网络 (39)TCP的运输连接管理

前言 TCP&#xff08;传输控制协议&#xff09;是一种面向连接的、可靠的传输协议&#xff0c;它在计算机网络中扮演着至关重要的角色。TCP的运输连接管理涉及连接建立、数据传送和连接释放三个阶段。 一、TCP的连接建立 TCP的连接建立采用三次握手机制&#xff0c;其过程如下&…

机器学习(1):线性回归概念

1 线性回归基础 1.1 什么是线性 例如&#xff1a;汽车每小时60KM&#xff0c;3小时可以行使多长距离&#xff1f;已知汽车的速度&#xff0c;则汽车的行使距离只与时间唯一相关。在二元的直角坐标系中&#xff0c;描出这一关系的图是一条直线&#xff0c;所以称为线性关系。 线…

1,Linux环境变量基本定义(基于Ubuntu示例进行讲解)

linux环境变量的概念 Linux环境变量&#xff08;准确说应该是shell变量&#xff09;&#xff0c;是直接存储在操作系统中的一组键值对&#xff08;dict类型&#xff09;&#xff0c;用于配置系统和应用程序的操作行为。 【有经验的描述】&#xff1a;它们的工作原理很简单&am…

STM32入门教程-示例程序(按键控制LED光敏传感器控制蜂鸣器)

1. LED Blink&#xff08;闪烁&#xff09; 代码主体包含&#xff1a;LED.c key.c main.c delay.c&#xff08;延时防按键抖动&#xff09; 程序代码如下&#xff08;涉及RCC与GPIO两个外设&#xff09;&#xff1a; 1.使用RCC使能GPIO时钟 RCC_APB2PeriphClockC…

java springboot3.x jwt+spring security6.x实现用户登录认证

springboot3.x jwtspring security6.x实现用户登录认证 什么是JWT JWT&#xff08;JSON Web Token&#xff09;是一种开放标准&#xff08;RFC 7519&#xff09;&#xff0c;它用于在网络应用环境中传递声明。通常&#xff0c;JWT用于身份验证和信息交换。JWT的一个典型用法是…