基于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博客](https://blog.csdn.net/qq_41264055/article/details/139772220 "六、在Qt下通过PCL在VTQK9.3.0下显示自己的pcd点云文件_qt pcl vtk-CSDN博客") \[2\] [Win11+VS2022配置编译VTK9.1_vtk vs2022 配置-CSDN博客](https://blog.csdn.net/qq_45488453/article/details/127577870 "Win11+VS2022配置编译VTK9.1_vtk vs2022 配置-CSDN博客") \[3\] [VTK源码编译安装记录与教程(VS2019+QT5.15.2+PCL1.12.1+VTK9.1.0配置,超详细)_qt_AI大龙虾-GitCode 开源社区 (csdn.net)](https://gitcode.csdn.net/65eed5841a836825ed79f504.html?dp_token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI6NTEzODg5LCJleHAiOjE3Mjc0OTYwNDYsImlhdCI6MTcyNjg5MTI0NiwidXNlcm5hbWUiOiJKY2IxOTA2ODI0MDM4In0.kj9IeImwhO8loZjaX4Fvi4KB7OTsACnzwy3582VpSOk&spm=1001.2101.3001.6661.1&utm_medium=distribute.pc_relevant_t0.none-task-blog-2~default~BlogCommendFromBaidu~activity-1-130970389-blog-127577870.235%5Ev43%5Epc_blog_bottom_relevance_base5&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-2~default~BlogCommendFromBaidu~activity-1-130970389-blog-127577870.235%5Ev43%5Epc_blog_bottom_relevance_base5&utm_relevant_index=1 "VTK源码编译安装记录与教程(VS2019+QT5.15.2+PCL1.12.1+VTK9.1.0配置,超详细)_qt_AI大龙虾-GitCode 开源社区 (csdn.net)") \[4\] [点云渲染及可视化 (pcl::visualization)_pcl::visualization::pointcloudcolorhandlergenericf-CSDN博客](https://blog.csdn.net/A_L_A_N/article/details/108060859#:~:text=pcl%3A%3A%20visualization%3A%3APCLVisualizer%20viewer%28%22cloud%22%29%3B%20viewer.%20setBackgroundColor%20%280%2C%200%2C%200%29%3B,%2F%2F%20%E8%AE%BE%E7%BD%AE%E8%83%8C%E6%99%AF%E8%89%B2%2CRGB%2C0~1%20pcl%3A%3A%20visualization%3A%3APointCloudColorHandlerGenericField%3Cpcl%3A%3APointXYZ%3E%20fildColor%28cloud%2C%20%22x%22%29%3B%20%2F%2F%20%E6%8C%89%E7%85%A7x%E5%AD%97%E6%AE%B5%E8%BF%9B%E8%A1%8C%E6%B8%B2%E6%9F%93 "点云渲染及可视化 (pcl::visualization)_pcl::visualization::pointcloudcolorhandlergenericf-CSDN博客") \[5\] [PCL学习之点云可视化:坐标字段、随机、单一颜色、法向量 - Gesündeste - 博客园 (cnblogs.com)](https://www.cnblogs.com/Glucklichste/p/11569258.html#:~:text=%E8%AF%A5%E6%96%B9%E6%B3%95%28Poin "PCL学习之点云可视化:坐标字段、随机、单一颜色、法向量 - Gesündeste - 博客园 (cnblogs.com)") ## 开发文档 [Point Cloud Library (PCL): Module visualization (pointclouds.org)](https://pointclouds.org/documentation/group__visualization.html "Point Cloud Library (PCL): Module visualization (pointclouds.org)") [examples.vtk.org/site/Cxx/](https://examples.vtk.org/site/Cxx/ "examples.vtk.org/site/Cxx/") [Qt Examples And Tutorials \| Qt 5.15](https://doc.qt.io/qt-5/qtexamplesandtutorials.html "Qt Examples And Tutorials | Qt 5.15") [https://github.com/nmwsharp/happly](https://github.com/nmwsharp/happly "https://github.com/nmwsharp/happly") ## 实践过程中的报错问题解决方法: /\*\*1\*\*/ [std::max,std::min错误:应输入标识符的解决方法_std::min 应输入标识符-CSDN博客](https://blog.csdn.net/duiwangxiaomi/article/details/103271222 "std::max,std::min错误:应输入标识符的解决方法_std::min 应输入标识符-CSDN博客") /\*\*2\*\*/[winsock2.h与ws2def.h等文件大量报错相关问题解决方法-CSDN博客](https://blog.csdn.net/weixin_43956221/article/details/117217614#:~:text=%23include " 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\ > > #include\ > > #include\ > > #include\

相关推荐
楼田莉子1 小时前
C++17新特性:__had_include/属性/求值顺序规则
开发语言·c++·后端
h_a_o777oah3 小时前
状态机+划分型 DP :深度解析K-划分问题下 DP 状态的转移逻辑(洛谷P2679 P2331 附C++代码)
c++·算法·动态规划·acm·状态机dp·划分型dp·滚动数组优化
maineKit3 小时前
VS Code 搭建 Qt 6 开发环境保姆级教程:CMake / qmake、MSVC / MinGW 四种组合全覆盖
qt
雪度娃娃4 小时前
Asio异步读写——连接的安全回收问题
开发语言·c++·安全·php
不吃土豆的马铃薯4 小时前
Spdlog 进阶:日志基本控制、日志格式控制、异步记录器
linux·服务器·开发语言·前端·c++
ai安歌4 小时前
鸿蒙PC:Qt适配OpenHarmony实战【取色间】:RGB 滑动调整、HEX 展示和颜色预览
qt·华为·harmonyos
liulilittle5 小时前
TCP UCP:基于卡尔曼滤波的BBR增强型拥塞控制算法
linux·网络·c++·tcp/ip·算法·c·通讯
咩咦5 小时前
C++学习笔记26:static 静态成员
c++·学习笔记·static·静态成员变量·静态成员·静态成员函数
秋落风声6 小时前
内存池仿Nginx C++实现
c++·nginx
小白要努力sgy6 小时前
实时通信框架CyberRT
c++·自动驾驶·实时通讯