PCL学习记录--点云数据的获取与可视化
1、获取点云数据
(1)点云定义
pointCloud = std::make_shared<pcl::PointCloud<pcl::PointXYZ>>();
(2)获取相机数据(camera.c和camera.h略)
frame = camera.getFrame();
(3)利用深度信息获取点云数据
void infer_base::getXYZPointCloud(const cv::Mat &cv_depth) {int width = camera.k4aCalibration.color_camera_calibration.resolution_width;int height = camera.k4aCalibration.color_camera_calibration.resolution_height;depthImage = k4a::image::create_from_buffer(K4A_IMAGE_FORMAT_DEPTH16, width, height,width * (int) sizeof(uint16_t), cv_depth.data,width * height * 2, nullptr, nullptr);xyzImage = camera.k4aTransformation.depth_image_to_point_cloud(depthImage, K4A_CALIBRATION_TYPE_COLOR);auto *xyzImageData = (signed short *) xyzImage.get_buffer();pointCloud->clear();pcl::PointXYZ point;for (int i = 0; i < width * height; i++) {if (xyzImageData[3 * i + 2] == 0) continue;point.x = xyzImageData[3 * i + 0];point.y = xyzImageData[3 * i + 1];point.z = xyzImageData[3 * i + 2];pointCloud->points.emplace_back(point);}
}
getXYZPointCloud(frame.depthImage);
2、将点云数据保存为.ply文件
pcl::io::savePLYFile ("one.ply", *pointCloud);
pcl::PCLPointCloud2 clod;
3、将.ply文件转为.pcd文件
pcl::io::loadPLYFile("one.ply", clod);
pcl::io::savePCDFile("one.pcd", clod);
4、.ply或.pcd文件可视化
安装Cloudcompare软件:Flathub—An app store and build service for Linux
5、一些问题
(1)如果直接将点云数据保存为.pcd文件则会报错:
[pcl::PCDWriter::writeASCII] Number of points different than width * height!
利用其他博客所描述的方法增加如下代码:
pointCloud->width = 1;
pointCloud->height = pointCloud->points.size();
成功保存.pcd文件但是可视化之后发现不正常。
(2)读错.ply文件时会报错,大概是保存的ply文件格式有问题:
[pcl::PLYReader::read] problem parsing header!
(3)想做到实时显示pcl点云,利用如下代码:
pcl::visualization::CloudViewer viewer("Cloud Viewer"); //创建viewer对象
viewer.showCloud(cloud);
放进循环里会报segmentation fault的错误:段错误 (核心已转储)
PCL学习记录--点云数据的获取与可视化相关推荐
- 点云库PCL学习笔记 -- 点云滤波Filtering -- 3. StatisticalOutlierRemoval 统计滤波器
点云库PCL学习笔记 -- 点云滤波Filtering -- 3.StatisticalOutlierRemoval 统计滤波器 StatisticalOutlierRemoval 统计滤波器相关简介 ...
- 利用PCL库从点云数据生成深度图像及关键点提取
利用PCL库从点云数据生成生成深度图像及关键点提取 利用PCL库从点云数据生成深度图像及关键点提取 本想利用标准点云数据库分割成若干块,利用标准点云数据生成深度图像作为数据库用来验证算法,目前效果不是 ...
- MySQL学习记录 (三) ----- SQL数据定义语句(DDL)
相关文章: <MySQL学习记录 (一) ----- 有关数据库的基本概念和MySQL常用命令> <MySQL学习记录 (二) ----- SQL数据查询语句(DQL)> &l ...
- MySQL学习记录 (二) ----- SQL数据查询语句(DQL)
相关文章: <MySQL学习记录 (一) ----- 有关数据库的基本概念和MySQL常用命令> <MySQL学习记录 (二) ----- SQL数据查询语句(DQL)> &l ...
- 小样本学习记录————利用所有数据的元学习Few-shot Text Classification with Distributional Signatures
小样本学习记录----利用所有数据的元学习Few-shot Text Classification with Distributional Signatures 在计算机视觉中,低水平的模式是可以跨学 ...
- PCL学习记录-Extra-1 pcl::PCLPointCloud2::Ptr和pcl::PointCloud<pcl::PointXYZ> 点云格式区别及相互转化
转载至:https://www.cnblogs.com/li-yao7758258/p/6659451.html 一. 关于pcl::PCLPointCloud2::Ptr和pcl::PointClo ...
- Range_Image深度图-1 PCL学习记录-9 Range_Image深度图原理,以及如何通过点云生成深度图
一.深度图简介 目前深度图像的获取方法有激光雷达深度成像法,计算机立体视觉成像,坐标测量机法,莫尔条纹法,结构光法等等,针对深度图像的研究重点主要集中在以下几个方面, 深度图像的分割技术 深度图像的边 ...
- RPLIDAR思岚雷达学习记录--4--雷达数据实时保存
数据持续输出测试 第三节中最后虽然可以读取到雷达的角度和距离数据,但是每次后面读取的数据都会覆盖之前的数据,因此尝试使用动态的文件名,这样每次保存数据都会使用不同的文件名,数据就不会被覆盖.决定使用当 ...
- VQA任务学习记录1(附数据使用代码记录)
0.前言 最近需要学习处理VQA任务特此记录,这个主要是对论文bottom-up and top-down()和bilinear attention network()中的代码部分的学习记录,目前也并 ...
最新文章
- 谋局科技创新:两院院士大会释放重要信号
- Skype for Business Server 2015-09-测试-基本功能(建议:看PDF!)
- [源码和文档分享]基于C++实现的运动会统分系统
- 读取剪贴板英语转换为国际莫斯码
- 前端学习(1879)vue之电商管理系统电商系统之通过axios拦截器添加token认证
- python 判断一个点(坐标)是否在一个多边形内利用射线法
- Spring项目包变文件夹
- XXX数据仓库分析模型设计文档
- 35 岁以下科技创新 35 人之一,这位博士解开美团 AI 的冰山一角!
- [机器学习]朴素贝叶斯原理和基于Spark 实例
- [转]Linq查询DataTable,DataRow
- 恩智浦智能车摄像头循迹部分
- 看程序员如何使用Python快速给视频添加字幕
- android gsm功能,Android手机-GSM网络与WCDMA网络选择的设置
- 二维码门禁(ssm做后台)
- 为什么说体验即设计?
- 软硬件学习记录5—— Verilog语言中的数据类型
- 触摸板把计算机从休眠状态唤醒,win10笔记本盒盖唤醒后触摸板失灵的处理方法...
- 最近五年中秋节后第一天涨幅前十个股在此 沪深三七开 更多规律你来找
- Ubuntu不能连接XShell、主机Ping不通虚拟机,但虚拟机能ping通主机
热门文章
- php跳转404_ThinkPHP设置404跳转页面
- Tornado IOLoop
- thinkphp3 获取ip 定位 地理位置 UTFWry.dat IP地址定位
- uniApp 适配问题 自定义头部导航栏/吸顶距离适配
- 转置矩阵的循环实现 C++实现
- 树脂塞孔php,树脂塞孔基本工艺作业流程浅析.doc
- 开发者,你了解手机有多少种传感器?
- 【2020-10-26】APP逆向之某某健康(2)
- 青岛,一座来了就想“哈”啤酒的城市
- sum数组函数运用c语言,sum函数的数组运算