当前位置: 首页 > article >正文

PCD可视化(C++)

文章目录

  • 主程序
  • CMakeLists.txt
  • 编译
  • 运行程序

主程序

#include <pcl/io/pcd_io.h>
#include <pcl/point_types.h>
#include <pcl/visualization/pcl_visualizer.h>
#include <thread> // 添加此行

int main(int argc, char** argv) {
    if (argc < 2) {
        std::cerr << "Usage: " << argv[0] << " <path-to-pcd-file>" << std::endl;
        return -1;
    }

    std::string pcd_file = argv[1];

    // 创建点云对象
    pcl::PointCloud<pcl::PointXYZ>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZ>);

    // 加载 PCD 文件
    if (pcl::io::loadPCDFile<pcl::PointXYZ>(pcd_file, *cloud) == -1) {
        PCL_ERROR("Couldn't read file %s \n", pcd_file.c_str());
        return -1;
    }

    // 创建 PCL 可视化对象
    pcl::visualization::PCLVisualizer::Ptr viewer(new pcl::visualization::PCLVisualizer("3D Viewer"));
    viewer->setBackgroundColor(0, 0, 0);
    viewer->addPointCloud<pcl::PointXYZ>(cloud, "sample cloud");
    viewer->setPointCloudRenderingProperties(pcl::visualization::PCL_VISUALIZER_POINT_SIZE, 1, "sample cloud");
    viewer->addCoordinateSystem(1.0);
    viewer->initCameraParameters();

    // 运行可视化
    while (!viewer->wasStopped()) {
        viewer->spinOnce(100);
        std::this_thread::sleep_for(std::chrono::milliseconds(100)); // 使用 std::this_thread::sleep_for
    }

    return 0;
}

CMakeLists.txt

cmake_minimum_required(VERSION 3.10)
project(PCDViewer)

# 查找 PCL 库
find_package(PCL 1.8 REQUIRED)

# 包含 PCL 头文件
include_directories(${PCL_INCLUDE_DIRS})
link_directories(${PCL_LIBRARY_DIRS})
add_definitions(${PCL_DEFINITIONS})

# 添加可执行文件
add_executable(pcd_viewer main.cpp)

# 链接 PCL 库
target_link_libraries(pcd_viewer ${PCL_LIBRARIES})

编译

# 创建并进入构建目录
mkdir build
cd build

# 运行 cmake
cmake ..

# 编译程序
make

# 运行程序
./pcd_viewer <path-to-your-pcd-file>

运行程序

./pcd_viewer GlobalMap.pcd

在这里插入图片描述


http://www.kler.cn/a/378955.html

相关文章:

  • 算法|牛客网华为机试21-30C++
  • LeetCode100之盛最多水的容器(11)--Java
  • #渗透测试#SRC漏洞挖掘#自动化脚本的编写01
  • 【C++】对左值引用右值引用的深入理解(右值引用与移动语义)
  • 文化素质教育系列讲座听讲6
  • 【启程Golang之旅】并发编程构建简易聊天系统
  • 一个git相关的cve:CVE-2024-32002
  • Android Studio插件版本与Gradle 版本对应关系
  • sql注入——靶场Less1
  • 请以鸿蒙生态崛起,开发者有哪些机遇与挑战
  • 探索PickleDB:Python中的轻量级数据存储利器
  • Rust 力扣 - 1984. 学生分数的最小差值
  • 国标GB28181软件EasyGBS国标GB28181网页直播平台在邮政快递场景中的应用
  • Web应用性能测试工具 - httpstat
  • Centos环境下安装docker
  • 红帽9—使用yum源部署docker
  • 做接口自动化遇到的20个难点,记录下我是如何解决的!
  • 什么是RabbitMQ
  • linux的文件IO操作---read函数如何退出
  • 使用Mac如何才能提高OCR与翻译的效率
  • SpringBoot技术栈:在线试题库系统深度开发
  • ElastricSearch 原理以及简单实用(超级通俗)
  • 5、reactive
  • 【保姆级教程】实操 Linux 磁盘管理:硬盘选型 分区挂载
  • el-table滚动下拉数据显示不全
  • web安全测试渗透案例知识点总结(上)——小白入狱