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

PCL绘制点云+法线

 读取的点云ASCII码文件,每行6个数据,3维坐标+3维法向

#include <iostream>
#include <fstream>
#include <vector>
#include <string>
#include <pcl/point_types.h>
#include <pcl/point_cloud.h>
#include <pcl/visualization/pcl_visualizer.h>
#include <pcl/io/io.h>typedef pcl::PointXYZRGBNormal PointT;  // 使用包含法向量的点类型int main(int argc, char** argv) {//if (argc != 2) {//    std::cerr << "Usage: " << argv[0] << " <input_txt_file>" << std::endl;//    return -1;//}// 1. 创建点云对象pcl::PointCloud<PointT>::Ptr cloud(new pcl::PointCloud<PointT>);// 2. 打开并读取TXT文件std::ifstream file("E:\\Data\\pn.txt");if (!file.is_open()) {std::cerr << "Error opening file: " << argv[1] << std::endl;return -1;}std::string line;while (std::getline(file, line)) {if (line.empty()) continue;std::istringstream iss(line);PointT point;// 读取坐标 (x,y,z) 和法向量 (nx,ny,nz)if (!(iss >> point.x >> point.y >> point.z>> point.normal_x >> point.normal_y >> point.normal_z)) {std::cerr << "Error parsing line: " << line << std::endl;continue;}// 设置点的颜色(可选)point.r = 255;  // 红色point.g = 255;  // 绿色point.b = 255;  // 白色cloud->push_back(point);}file.close();// 3. 设置点云属性cloud->width = cloud->size();cloud->height = 1;cloud->is_dense = false;//std::cout << "Loaded " << cloud->size() << " points from " << argv[1] << std::endl;// 4. 可视化点云和法向量pcl::visualization::PCLVisualizer viewer("Point Cloud Viewer");// 添加点云viewer.addPointCloud<PointT>(cloud, "cloud");// 添加法向量(每10个点显示一个法向量,避免过于密集)viewer.addPointCloudNormals<PointT>(cloud, 2, 1.0, "normals");// 设置背景色viewer.setBackgroundColor(0.1, 0.1, 0.1);// 设置点云颜色属性viewer.setPointCloudRenderingProperties(pcl::visualization::PCL_VISUALIZER_POINT_SIZE, 2, "cloud");// 设置法线绘制的颜色属性viewer.setPointCloudRenderingProperties(pcl::visualization::PCL_VISUALIZER_COLOR,1.0, 0.0, 0.0,  // RGB值 (1.0,0.0,0.0)表示红色"normals");// 5. 主循环while (!viewer.wasStopped()) {viewer.spinOnce(100);}return 0;
}

http://www.xdnf.cn/news/158563.html

相关文章:

  • 2025.04.26-饿了么春招笔试题-第三题
  • 网络原理 ——TCP 协议
  • Spring Boot 连接 Microsoft SQL Server 实现登录验证
  • 开源AI智能名片链动2+1模式S2B2C商城小程序源码赋能下的社交电商创业者技能跃迁与价值重构
  • 基于大模型底座重构司法信息系统
  • 软件设计原则
  • C语言中宏的高级应用
  • Astro canvas大屏从iotDA上抽取设备影子的参数的详细操作实施路径
  • 为什么vllm能够加快大模型推理速度?
  • 数据资产价值及其实现路径-简答题回顾
  • FPGA前瞻篇-组合逻辑电路设计-多路复用器
  • 比象AI创作系统,多模态大模型:问答分析+AI绘画+管理后台系统
  • 一、UI自动化测试01--认识和元素定位方法
  • NHANES指标推荐:DI-GM
  • 用python借用飞书机器人群发布定期内容
  • ShenNiusModularity项目源码学习(23:ShenNius.Admin.Mvc项目分析-8)
  • 第十六届蓝桥杯大赛软件赛省赛第二场 C/C++ 大学 A 组
  • 【数据结构刷题】顺序表与ArrayList
  • Linux下编译并打包MNN项目迁移至其他设备
  • Qt动态库信号崩溃问题解决方案
  • Leetcode刷题 由浅入深之哈希法——202. 快乐数
  • 机器学习(10)——神经网络
  • 《Python Web部署应知应会》Flask网站隐藏或改变浏览器URL:从Nginx反向代理到URL重写技术
  • 【人工智能之大模型】详述大模型中​AWQ(Activation-aware Weight Quantization)量化的关键步骤?
  • Three.js + React 实战系列-3D 个人主页:构建 Hero 场景组件(项目核心)✨
  • Github 2025-04-26 Rust开源项目日报Top10
  • 学习笔记——《Java面向对象程序设计》-内部类、匿名类、异常类
  • 解决Ubuntu下使用CLion构建Qt项目时找不到已安装的模块的问题
  • AI编程案例拆解|基于机器学习XX评分系统-后端篇
  • 【数据可视化-35】全球太空探索数据集(2000-2025)可视化分析