基于深度图与RGB图-->点云数据

2023-10-27

在这里记录一下,以备后续查阅~~~

输入:对齐的深度图与RGB图

输出:点云数据

#include <iostream>
#include <pcl/io/io.h>
#include <pcl/io/pcd_io.h>
#include <pcl/point_types.h>
#include <opencv2/opencv.hpp>
#include <string>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <pcl/visualization/cloud_viewer.h>
#include <ctime>


using namespace std;
// 定义点云类型
typedef pcl::PointXYZRGBA PointT;
typedef pcl::PointCloud<PointT> PointCloud;

int main(int argc, char** argv)
{
	// 读取./data/rgb.png和./data/depth.png,并转化为点云
	// 图像矩阵
	cv::Mat rgb, depth;
	// 使用cv::imread()来读取图像
	rgb = cv::imread("../testdata/RGB.png");
	const char filename[] = "../testdata/D.png";
	//“2”拿深度s
	depth = cv::imread(filename, 2);
	// 点云变量
	// 使用智能指针,创建一个空点云。这种指针用完会自动释放。
	PointCloud::Ptr cloud(new PointCloud);
	// 遍历深度图
	for (int m = 0; m < depth.rows; m++)
		for (int n = 0; n < depth.cols; n++)
		{
			ushort d = depth.ptr<ushort>(m)[n];
			if (d == 0)
				continue;
			PointT p;
			p.x = m;
			p.y = n;
			p.z = double(d);

			// 从rgb图像中获取它的颜色
			// rgb是三通道的BGR格式图,所以按下面的顺序获取颜色。
			/*p.b = rgb.ptr<uchar>(m)[n * 3];;
			p.g = rgb.ptr<uchar>(m)[n * 3 + 1];
			p.r = rgb.ptr<uchar>(m)[n * 3 + 2];*/

			//如果不需要将点云上色,可改成单一色。
			p.b = 255;;
			p.g = 255;
			p.r = 255;

			// 把p加入到点云中
			cloud->points.push_back(p);
		}
	// 设置并保存点云
	cloud->height = 1;
	cloud->width = cloud->points.size();
	cout << "point cloud size = " << cloud->points.size() << endl;
	cloud->is_dense = false;
	try {
		//保存点云图
		pcl::io::savePCDFile("../testdata/result.pcd", *cloud);
	}
	catch (pcl::IOException &e) {
		cout << e.what() << endl;
	}
	//显示点云图
	pcl::visualization::CloudViewer viewer("Simple Cloud Viewer");//直接创造一个显示窗口
	viewer.showCloud(cloud);//在这个窗口显示点云
	while (!viewer.wasStopped())
	{
	}
	// 清除数据并退出
	cloud->points.clear();
	cout << "Point cloud saved." << endl;
	return 0;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

基于深度图与RGB图-->点云数据 的相关文章

  • x:将 ViewModel 方法绑定到 DataTemplate 内的事件

    我基本上问同样的问题这个人 https stackoverflow com questions 10752448 binding to viewmodels property from a template 但在较新的背景下x Bind V
  • C 编程:带有数组的函数

    我正在尝试编写一个函数 该函数查找行为 4 列为 4 的二维数组中的最大值 其中二维数组填充有用户输入 我知道我的主要错误是函数中的数组 但我不确定它是什么 如果有人能够找到我出错的地方而不是编写新代码 我将不胜感激 除非我刚去南方 我的尝
  • 如何在当前 Visual Studio 主机内的 Visual Studio 扩展中调试使用 Roslyn 编译的代码?

    我有一个 Visual Studio 扩展 它使用 Roslyn 获取当前打开的解决方案中的项目 编译它并从中运行方法 程序员可以修改该项目 我已从当前 VisualStudioWorkspace 成功编译了 Visual Studio 扩
  • 复制目录下所有文件

    如何将一个目录中的所有内容复制到另一个目录而不循环遍历每个文件 你不能 两者都不Directory http msdn microsoft com en us library system io directory aspx nor Dir
  • 如何在 Android 中使用 C# 生成的 RSA 公钥?

    我想在无法假定 HTTPS 可用的情况下确保 Android 应用程序和 C ASP NET 服务器之间的消息隐私 我想使用 RSA 来加密 Android 设备首次联系服务器时传输的对称密钥 RSA密钥对已在服务器上生成 私钥保存在服务器
  • 对于某些 PDF 文件,LoadIFilter() 返回 -2147467259

    我正在尝试使用 Adob e IFilter 搜索 PDF 文件 我的代码是用 C 编写的 我使用 p invoke 来获取 IFilter 的实例 DllImport query dll SetLastError true CharSet
  • 当文件流没有新数据时如何防止fgets阻塞

    我有一个popen 执行的函数tail f sometextfile 只要文件流中有数据显然我就可以通过fgets 现在 如果没有新数据来自尾部 fgets 挂起 我试过ferror and feof 无济于事 我怎样才能确定fgets 当
  • C++ 中的参考文献

    我偶尔会在 StackOverflow 上看到代码 询问一些涉及函数的重载歧义 例如 void foo int param 我的问题是 为什么会出现这种情况 或者更确切地说 你什么时候会有 对参考的参考 这与普通的旧参考有何不同 我从未在现
  • 从 mvc 控制器使用 Web api 控制器操作

    我有两个控制器 一个mvc控制器和一个api控制器 它们都在同一个项目中 HomeController Controller DataController ApiController 如果我想从 HomeController 中使用 Dat
  • 如何确定 CultureInfo 实例是否支持拉丁字符

    是否可以确定是否CultureInfo http msdn microsoft com en us library system globalization cultureinfo aspx我正在使用的实例是否基于拉丁字符集 我相信你可以使
  • 如何在 C# 中计算 power-of?

    我不太擅长数学 而且 C 似乎没有提供幂函数 所以我想知道是否有人知道我将如何进行这样的计算 var dimensions 100 100 100 00 3 00 See Math Pow http msdn microsoft com e
  • 使用 C++ 和 BOOST 读取 JSON 文件

    HTTP 服务器向我发送一个 JSON 响应 字符串 如下所示 folders id 109 parent id 110 path 1 105 110 id 110 parent id 105 path 1 105 files id 26
  • 解决相关代码的低 FPS 问题以计算图像中的偏移

    我正在尝试使用相关性来跟踪对象 我在较大的图像中逐帧找到较小的补丁 为此 我发现补丁中的变化 并且相关性最大的地方 用新补丁更新补丁 我的代码是 cv Mat im float 2 imagePart out cv Mat im float
  • 在 Rcpp 中使用其他包中的 C 函数

    我试图从 C 函数中的 cubature 包调用 C 例程来执行多维积分 我试图重现的基本 R 示例是 library cubature integrand lt function x sin x adaptIntegrate integr
  • 当 int32_t 是扩展整数类型且 int 是 32 位补码标准整数类型时,(INT32_MIN + 1) 是什么

    想象一下这种情况 int32 t is an 扩展整数类型它以二进制补码表示 按照标准要求int32 t被代表 这意味着INT32 MIN is 2147483648 0x80000000 同时int is a 标准整数类型它以补码形式表示
  • Ninject 垃圾收集 [关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 我在一个由
  • 检测 PowerShell 开关

    我正在用 C 开发 PowerShell cmdlet 并且有 true false switch 语句 我注意到 如果我希望 bool 为 true 我需要指定 SwitchName true 否则我会得到 Missing an argu
  • 如何订阅 C++/CX 中 Windows 运行时组件内引发的事件?

    我在 Windows 运行时组件 用 C 编写 中有一个引发事件的类 我无法弄清楚如何在引用该组件的 C CX 应用程序中订阅这些事件 C 代码 在 Windows 运行时组件中 public sealed class Messenger
  • 具有元组类型子集相应参数的模板函数

    我想这样写函数find multi set
  • 时间跨度格式[重复]

    这个问题在这里已经有答案了 当您将时间跨度声明为以下形式时 如何优雅地格式化时间跨度以表示 1 小时 10 分钟 TimeSpan t new TimeSpan 0 70 0 我当然知道你可以为此做一些简单的数学计算 但我有点希望 NET

随机推荐

  • 撸狗初体验

    直接上视频听我 BB https www bilibili com video av75675708 下面开始编故事 某个周末 走在去加班的路上 脚底突然被某个东西咯噔一下 抬脚一看 竟然是 捡起来一看 哈士奇 哈士奇 哈士奇 竟然是 DF
  • 编程中,有哪些好的习惯一开始就值得坚持?

    嗨 小伙伴们大家好 我是沉默王二 就是那个吹自己既有颜值又有才华的家伙 今天这个话题我觉得还是值得和大家探讨的 因为好的编程习惯对程序员的职业生涯真的非常重要 记得我在学驾照的时候 遇到一哥们 之前开过车 属于无证驾驶的那种 但是 这哥们科
  • 一键部署WeBase-FISCO-BCOS联盟链管理平台

    文章目录 一键部署 前置条件 实际使用环境 一 环境安装 ubuntu18 04 1 Java安装及环境变量配置 2 Mysql的安装及配置 3 python配置 PyMySQL部署 Python3 4 二 拉取webase部署脚本 修改w
  • PageHelper 分页查询「实现篇」

    两种情况 分两种情况 查出来为 PageQueryRespDTO 查出来直接是 Model 查出来为 PageQueryRespDTO public PageInfo
  • WS-Discovery(网络服务动态发现)协议再解读

    WS Discovery 网络服务动态发现 协议再解读 文章目录 WS Discovery 网络服务动态发现 协议再解读 1 概述 2 协议资料 3 协议介绍 1 适用范围 2 不适用 4 协议示例及wireshark抓包分析 1 客户端探
  • html想相关概念

    HTML Hypertext Markup Language 是一种用于创建网页的标记语言 它为开发者提供了一种结构化的方式来描述网页的内容和外观 本文将介绍HTML的基础知识和关键点 让读者了解如何使用HTML来构建现代网页 HTML的基
  • 将日志打印的SQL组装为可执行SQL_sublime版

    java项目日志打印的sql和条件参数是分离的 使用起来很不方便 之前为了解决这种问题 使用notepad 录制宏解决了这个问题 但是后期不方便维护 遂转用sublime 这个跟notepad 比起来有些东西不是很习惯 但是好处是插件可以自
  • 关于“网页埋点”的简单介绍与实现

    网页埋点的简单实现 本文抛开数据增长方法和埋点技术原理的大道理 通过一个简单的埋点小实例帮助大家更好的了解埋点 一 什么是数据埋点 埋点是网站和APP等产品进行日常改进及数据分析的数据采集基础 根据采集得到的用户行为数据 例如 页面访问路径
  • React源码分析(二)=> Reac初次渲染分析

    文章目录 1 render阶段 legacyRenderSubtreeIntoContainer 1 1 legacyCreateRootFromDOMContainer 1 1 1 ReactRoot 1 1 1 1 createFibe
  • [CM311-1A]-买了一个机顶盒准备刷成 Linux 盒子!

    目录 移动魔百盒 CM311 1A CM311 1A 配置 烧录系统盘将机顶盒刷成 Armbian 服务器教程发布啦 为什么非要买个盒子 拆后介绍 使用介绍 启动盒子 机顶盒怎么截屏 键盘鼠标操作 系统应用 系统设置 网络设置 空间管理 分
  • axios vue 加载效果动画_Vue 使用 axios 或者 vue-router 配置页面加载动画

    先提一笔 这篇文章是关于 Vue 页面加载动画的实现 以下介绍两种方法 使用 axios 配置全局中当发生 ajax 请求时 显示一个加载动画 当 ajax 请求结束后 隐藏加载动画 使用 Vue router 实现当页面跳转时有一个加载动
  • 图像I、B、P帧介绍

    I p b 帧 I帧 帧内编码帧 尽可能去除图像空间冗余信息来压缩传输数据量的帧内编码图像 P帧 前向预测编码帧 通过充分将低于图像序列中前面已编码帧的时间冗余信息来压缩传输数据量的编码图像 也叫预测帧 B帧 双向预测内插编码帧 既考虑与源
  • “区块链+物联网”的一场“网链”能顺利奔现吗?

    前不久 物联网安全高峰论坛在京举行 相关行业的专家在探讨物联网安全问题时不可避免地谈及区块链技术在物联网安全方面的独特价值 有专家指出 目前全球年产近百亿的智能终端控制芯片 真正能投入联网的还不足1 而阻碍物联网进一步发展融入大众生活中的
  • 使用Red Hat Insights注册RedHat系统

    文章目录 前因 Step 1 确认所选择的系统 Step 2 将系统注册到Red Hat Insights Step 3 具体操作演示 前因 使用SSH命令远程连接红帽系统 提示需要使用下面提示的命令进行系统注册订阅 C Users xyb
  • 【YOLOv7调整detect.py】1.调整检测框粗细,2.设定标签颜色,3.只显示与标签数目相同的检测结果

    目录 1 调整检测框粗细 2 设定标签颜色 3 只显示与标签数目相同的检测结果 1 调整检测框粗细 在detect py中按住Ctrl F检索line thickness定位过去 在129行左右 更改line thickness的大小即可
  • 启动nginx报错找不到 libssl.so.1.1

    项目场景 centOS7安装openresty后启动nginx报错 nginx error while loading shared libraries libssl so 1 1 cannot open shared object fil
  • python 存根_pyi文件是干吗的?(一文读懂Python的存根文件和类型检查)

    参考资料 html 写这篇文章的缘由是我在网上下载的项目中看到了 pyi文件 可是寻找了不少资料才对这些个概念 存根文件 类型检查 有了一个直观的印象 这篇随笔的目的是用最短的篇幅让你理解这些概念 测试 首先我介绍几个论断 this 1 P
  • React composing components

    bottom up div div
  • PyTorch源码安装小记

    Torch是Facebook AIR去年6月开源的深度学习框架 向G家的Tensorflow看起 基于Lua开发 可以充分利用GPU进行计算加速 PyTorch是FAIR今年1月发布的 在原来基础上提供python接口支持 也是正面刚支持p
  • 基于深度图与RGB图-->点云数据

    在这里记录一下 以备后续查阅 输入 对齐的深度图与RGB图 输出 点云数据 include