当前位置: 首页 > 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;
}

相关文章:

  • 【教程】Windows通过网线共享网络给其它设备
  • python调用ffmpeg对截取视频片段,可批量处理
  • 介绍常用的退烧与消炎药
  • 前端学习笔记(四)自定义组件控制自己的css
  • 写了一个关于SpringAop记录用户操作的功能
  • 从入门到精通汇编语言 第七章(高级汇编语言技术)
  • goweb项目结构以及如何实现前后端交互
  • 【GoChat】密码处理与实现JWT+进行功能单测
  • MuJoCo 关节角速度记录与可视化,监控机械臂运动状态
  • 【特殊场景应对9】视频简历的适用场景与风险分析
  • 测试模板x
  • AI 与高性能计算的深度融合:开启科技新纪元
  • 【互联网架构解析】从物理层到应用层的全栈组成
  • 前端开发本地配置 HTTPS 全面详细教程
  • Java 自定义TCP协议:【特点编码字符串<=>字节<=>特点编码16进制】16进制字符串和编码的转换 (各种编码通过字节向16进制的互转)| XOR计算
  • 在华为云平台上使用 MQTT 协议:构建高效可靠的物联网通信
  • crossOriginLoading使用说明
  • gradle-缓存、依赖、初始化脚本、仓库配置目录详解
  • 【锂电池剩余寿命预测】GRU门控循环单元锂电池剩余寿命预测(Matlab完整源码)
  • 发布-订阅模式应用场景及示例说明
  • 三杀皇马剑指四冠,硬扛到底的巴萨,赢球又赢人
  • 网络游戏用户规模和市场销售创新高,知识产权保护面临哪些挑战?
  • 首映|马丽:真想抱抱臧姑娘,对她说辛苦了
  • 财政部:前3月国有企业利润总额10907.4亿元,同比增1.7%
  • 2025年两院院士增选工作启动,名额均不超过100名
  • 南方医科大学原副校长宁习洲主动投案,接受审查调查