sfm点云代码_PCL点云显示sfm数据
PCL点云
继之前的sfm,我们得到了图像的特征匹配点的三维坐标,颜色以及相机内参,如何将其显示在屏幕上呢?
需要使用PCL点云库进行显示。(安装)
PCL(Point Cloud Library)是在吸收了前人点云相关研究基础上建立起来的大型跨平台开源C++编程库,它实现了大量点云相关的通用算法和高效数据结构,涉及到点云获取、滤波、分割、配准、检索、特征提取、识别、追踪、曲面重建、可视化等。
添加头文件:
#include
#include
#include
定义点云:
//-- pcl可视化 --//
PointCloud::Ptr cloud(new PointCloud);
//-- 实例化PCLVisualizer对象,窗口命名为3D viewer --//
boost::shared_ptr<:pclvisualizer> viewer(new visualization::PCLVisualizer("3D viewer"));
添加三维信息和颜色信息:
for (size_t i = 0; i < pts_3d.size(); i++)
{
//-- 定义带有三维坐标和颜色坐标的点 --//
//-- 读取三维点的坐标 --//
PointXYZRGB p;
p.x = pts_3d[i].x;
p.y = pts_3d[i].y;
p.z = pts_3d[i].z;
//-- 读取三维点的颜色 --//
//-- opencv默认通道是bgr --//
p.b = colors[i][0];
p.g = colors[i][1];
p.r = colors[i][2];
cloud->points.push_back(p);
}
在相机处添加坐标系:
由于有多个相机,需要在里面显示出相机的位姿,所以需要添加多个相机坐标系
Eigen::Matrix4f transformationMatrix;
//-- 仿射变换矩阵 --//
Eigen::Affine3f postion;
for (int i = 0; i
{
transformationMatrix <<
rotations[i].at(0, 0), rotations[i].at(0, 1), rotations[i].at(0, 2), transformations[i].at(0, 0),
rotations[i].at(1, 0), rotations[i].at(1, 1), rotations[i].at(1, 2), transformations[i].at(1, 0),
rotations[i].at(2, 0), rotations[i].at(2, 1), rotations[i].at(2, 2), transformations[i].at(2, 0),
0, 0, 0, 1;
postion.matrix() = transformationMatrix.inverse();
//-- 0.5是摄像机的尺寸,position是摄像机的位置 --//
viewer->addCoordinateSystem(0.5, postion);
}
添加点云:
viewer->addPointCloud(cloud, "sample cloud");
viewer->setPointCloudRenderingProperties(visualization::PCL_VISUALIZER_OPACITY, 5, "sample cloud");// 设置点云显示属性,
显示点云:
一定要写这一句,否则无法显示点云!!!
//-- 不写while循环,则窗口一闪而过 --//
while (!viewer->wasStopped()) {
//-- 一定要写这一句来显示点云 --//
viewer->spinOnce(100);
}
完整代码:
// PCL可视化
PointCloud::Ptr cloud(new PointCloud);
//pcl::visualization::CloudViewer viewer ("test");
boost::shared_ptr<:pclvisualizer> viewer(new visualization::PCLVisualizer("3D viewer")); // 实例化PCLVisualizer对象,窗口命名为3D viewer
for (size_t i = 0; i < pts_3d.size(); i++)
{
PointXYZRGB p;
p.x = pts_3d[i].x;
p.y = pts_3d[i].y;
p.z = pts_3d[i].z / 10.0;
p.b = colors[i][0];
p.g = colors[i][1];
p.r = colors[i][2];
cloud->points.push_back(p);
}
viewer->setBackgroundColor(0, 0, 0); // 设置背景颜色
// 在相机处添加坐标系
Eigen::Matrix4f transformationMatrix;
Eigen::Affine3f postion;
for (int i = 0; i
{
transformationMatrix <<
rotations[i].at(0, 0), rotations[i].at(0, 1), rotations[i].at(0, 2), transformations[i].at(0, 0),
rotations[i].at(1, 0), rotations[i].at(1, 1), rotations[i].at(1, 2), transformations[i].at(1, 0),
rotations[i].at(2, 0), rotations[i].at(2, 1), rotations[i].at(2, 2), transformations[i].at(2, 0),
0, 0, 0, 1;
postion.matrix() = transformationMatrix.inverse();
viewer->addCoordinateSystem(0.5, postion);
}
viewer->addPointCloud(cloud, "sample cloud");
viewer->setPointCloudRenderingProperties(visualization::PCL_VISUALIZER_OPACITY, 5, "sample cloud");// 设置点云显示属性,
while (!viewer->wasStopped()) {
viewer->spinOnce(100);
}
最终显示如图
sfm点云代码_PCL点云显示sfm数据相关推荐
- 运用京东云代码托管、云编译、云部署等产品进行蓝绿部署简单实践
干货 | 运用京东云代码托管.云编译.云部署等产品进行蓝绿部署简单实践 前几天我们以一种较为传统的方式在京东云上简单实践了基于Jenkins+Docker+Git 的CI流程,主要利用一些开源技术来实 ...
- python英文词云代码_Python 词云 【中/英】小白简单入门教程
1. 分析 构建词云需要具备: 原料即文章等内容 将内容进行分词 将分词后的内容利用构建词云的工具进行构建 保存成图片 2. 需要的主要模块 jieba 中文分词 wordcloud 构建词云 3. ...
- 【开源项目】QT OPENGL 与 shader 绘制展示视频代码实例 OPenGL直接显示YUV数据
本文使用QT中的QOpenGLFunctions(此类封装了OPenGL的方法,相当于QT版OPenGL) 其次重载 void paintGL(); void initializeGL(); v ...
- 「轻松支付,只需几步」使用 LeanCloud 云代码接入支付宝示例
如果你的应用想接入支付宝,让用户可以在应用内部直接支付,你可以看下这篇文档和开源项目,也许会给你带来一些帮助. 项目:https://github.com/leancloud/cloud-code-a ...
- 代码管理 阿里云 云效 设置云效 SSH 公钥 下载代码到本地配置SSH
前言:能来这里看怎么解决的,肯定就是没人带没人疼娃了,人生就是这里碰壁哪里碰壁.这里学点哪里学点..然后就没得学了... 设置云效 SSH 公钥 >云效代码管理 Codeup>操作指南&g ...
- 〖3D激光点云〗激光雷达点云bin文件读取和显示!
激光雷达点云bin文件读取和显示! 文章目录 一. 代码 二. 结果 三. 显示 四. 参考 首先声明文章主要参考:Ronny Restrepo!其中包括如下的内容. 点云数据的介绍 图像和点云坐标系 ...
- GEE|在GEE对Sentinel-2、Landsat7、Landsat8进行批量大气校正、去云,并进行均值融合、裁剪、显示和数据下载
前言: 由于我要使用S2在2016-2020年时序数据进行作物分类,但GEE仅提供2018年后的S2 L2A数据('COPERNICUS/S2_SR'),因此需要进行大气校正,同时由于需要的数据量大, ...
- 零基础STM32+ESP12F+MQTT连接阿里云服务器完整流程(三、STM32通过代码连接阿里云服务器)
要想实现通过代码实现STM32连入阿里云服务器,要首先实现使用AT指令通过串口连接阿里云,大家可以参考我之前的两篇文章,链接如下 链接: 零基础STM32+ESP12F+MQTT连接阿里云服务器完整流 ...
- (15)腾讯云微搭:云开发为底层支撑的低代码应用/表单开发平台
文章目录 一. 实验平台--腾讯云微搭 二. 项目功能与实现 1.3个数据模型 (1) 我的课程 (2) 任务清单 (3) 成绩单 2.2个通用选项集 (1) 星期 (2) 周数 3. 组件功能 (1 ...
- git提交代码到码云过程
参考: https://blog.csdn.net/qq_39400546/article/details/100150320 https://blog.csdn.net/aiming66/artic ...
最新文章
- Spring-AOP的实现方法
- android开发启动画面,Android开发笔记——如何正确实现App启动页
- android ConcurrentHashMap的使用
- Apache/Tomcat/JBOSS/Nginx(2)
- LeetCode 题 - 66. 列表元素加一 python实现
- 323 id与小数据池
- SEAYAR - 思雅,快乐生活
- python初学者编程指南源码_适合新手的开源项目(Python 篇)
- RecyclerView学习(二)之缓存探索
- 网际风全推数据接口_网际风千钧版 飞狐配套全推接口最新版(2013年5月10更新)...
- 比特率与波特率的定义及区别
- Ubuntu傻瓜式录制GIF图—— Peek
- json_encode转义中文问题
- 20162327WJH程序设计与数据结构第七周总结
- 边界值分析法用例设计
- 【Unity】问题记录:Some objects were not cleaned up when closing the scene
- oracle的解除锁表
- 药品大数据公司都有哪些?
- html5一键导航代码,网页端利用百度地图接口,制作一键导航功能
- 谁的php最厉害,羽坛四大天王谁最强?羽毛球四大天王排行榜(图)
热门文章
- Scrum板与Kanban如何抉择?drzdbtbna板与按照exrefp
- Hive基础教程 Hive入门
- 计算机多媒体课件制作,多媒体课件制作软件
- 花了一年时间开发的铣床数控系统NCStudioPro(支持钻孔,铣削,切割等铣床加工工艺)...
- 【C 语言】文件操作 ( fseek 函数 )
- Oracle导入导出二进制文件,你不知道的事
- 校招| C++ 后台开发学习路线
- 七日年化收益率计算器_定投收益率该怎么算?
- [转]冰山一角 管窥中国互联网的地下世界
- 华硕xhci灰色_[安装实录] 零基础完美黑苹果安装之华硕篇