基于QVTKOpenGLNativeWidget的三维点云可视化实现

测试结果展示

测试环境配置

操作系统:Windows 10 x64

CPU:Intel core i7-10750H处理器 32G

GPU:NVIDIA RTX2070 8G GDDR6 独立显卡

QT编译套件版本:QT5.15.2 msvc2019_64

工程代码开发平台:Visual Studio 2019(VS2019)

引入库版本:

PCL-1.12.1_x64_release

PDAL-2.4.3-X64_release

VTK-9.1.0_x64_release(包含QVTK)

配置说明:

依据参考资料3下载编译VTK后,将其生成的文件复制到PCL中的./3rdParty/VTK下,其中,复制过程选择"跳过重名文件"。然后,在项目文件中重新配置"链接器->输入->附加依赖项"。

注意事项

  1. libLAS库版本与LAS文件版本存在不兼容的情况,而PDAL对多版本的LAS文件存取较为稳定;

  2. 部分报错会来源于头文件链接顺序,例如以下顺序会产生较多报错:

#include <pdal/PointTable.hpp>

#include <pdal/PointView.hpp>

#include <pdal/io/LasReader.hpp>

#include <pcl/io/pcd_io.h>

#include <pcl/io/ply_io.h>

修正顺序后顺利通过编译:

#include <pcl/io/pcd_io.h>

#include <pcl/io/ply_io.h>

#include <pdal/PointTable.hpp>

#include <pdal/PointView.hpp>

#include <pdal/io/LasReader.hpp>

数据来源:

PCC Content Database -- MPEG Point Cloud Compression (mpeg-pcc.org)

/*1*/ Maja Krivokuća, Philip A. Chou, and Patrick Savill, "8i Voxelized Surface Light Field (8iVSLF) Dataset," ISO/IEC JTC1/SC29 WG11 (MPEG) input document m42914, Ljubljana, July 2018.

/*2*/ 常见的点云下载地址/点云集合/点云库30个_点云数据下载-CSDN博客

/*3*/ 点云数据集汇总整理(匠心之作,附官方下载地址)-CSDN博客

参考网络资料:

1 六、在Qt下通过PCL在VTQK9.3.0下显示自己的pcd点云文件_qt pcl vtk-CSDN博客

2 Win11+VS2022配置编译VTK9.1_vtk vs2022 配置-CSDN博客

3 VTK源码编译安装记录与教程(VS2019+QT5.15.2+PCL1.12.1+VTK9.1.0配置,超详细)_qt_AI大龙虾-GitCode 开源社区 (csdn.net)

4 点云渲染及可视化 (pcl::visualization)_pcl::visualization::pointcloudcolorhandlergenericf-CSDN博客

5 PCL学习之点云可视化:坐标字段、随机、单一颜色、法向量 - Gesündeste - 博客园 (cnblogs.com)

开发文档

Point Cloud Library (PCL): Module visualization (pointclouds.org)

examples.vtk.org/site/Cxx/

Qt Examples And Tutorials | Qt 5.15

https://github.com/nmwsharp/happly

实践过程中的报错问题解决方法:

/**1**/ std::max,std::min错误:应输入标识符的解决方法_std::min 应输入标识符-CSDN博客

/**2**/winsock2.h与ws2def.h等文件大量报错相关问题解决方法-CSDN博客

winsock2.h与windows.h的包含顺序很关键。在Windows平台上,windows.h可能会包含一些与winsock相关的旧版本定义,而winsock2.h是更新的Windows Sockets API 的头文件。因此,需确保在包含任何Qt头文件或其它可能间接包含windows.h的头文件之前,先包含winsock2.h和ws2tcpip.h,如下所示:

#include<winsock2.h>

#include<ws2tcpip.h>

#include<ws2def.h>

#include<windows.h>

相关推荐
王老师青少年编程7 小时前
2026年6月GESP真题及题解(C++一级):交税
c++·题解·真题·gesp·一级·2026年6月·交税
疋瓞12 小时前
python和C++对比(1)_数据类型和数据结构
数据结构·c++·python
C语言小火车12 小时前
C++ 堆排序深度精讲:基于完全二叉树的选择排序进化,最坏情况 O(n log n) 的稳定王者
开发语言·c++·算法·排序算法·堆排序
ALex_zry13 小时前
C++26 std::complex 结构化绑定详解:auto [re, im] = c
c语言·开发语言·c++
小短腿的代码世界14 小时前
Qt Bluetooth源码深度解析:从HCI协议到跨平台API的完整架构
开发语言·qt·架构
_olone14 小时前
Luogu P2704 [NOI2001] 炮兵阵地
c++·算法·状压dp
c2385615 小时前
互斥锁高频面试题全解:从基础概念到底层实现,一文通关
java·c++·面试·职场和发展
nianniannnn15 小时前
c++复习自存--继承
开发语言·c++
小短腿的代码世界15 小时前
Qt WebEngine多进程架构与IPC通信:从Chromium多进程到Qt信号槽融合
qt·架构·系统架构
旖-旎15 小时前
《LeetCode 746 使用最小花费爬楼梯 || LeetCode 91 解码方法》
c++·算法·leetcode·动态规划