OpenNI深度图获取点云数据

本文介绍了如何利用OpenNI库从奥比中光的深度摄像头采集点云数据。程序实现了设置距离限制、指定数据存储路径、创建用户文件夹以及保存点云数据的功能。最终成功获取并展示了点云数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近搞了个奥比中光的深度摄像头,需要通过摄像头获取点云数据,先后查阅了很多资料。

自己写了几个功能的C++程序:

1.采集点云数据(我这里设置的是0.8米以内,具体数值可以自己更改)
2.在控制台输入!号,设置采集数据存放的根目录
3.在控制台按空格键,输入在根目录下要新建的用户文件夹
4.在控制台按回车键,保存当前点云数据
5.在depth显示窗口按Esc退出程序

/*************************
OpenNI2 Point-cloud collect program
Author: Danqing Miao, 2018.11
*************************/

#include <stdlib.h>    
#include <iostream>    
#include <string>   
#include <fstream> 
#include <direct.h>
#include "OpenNI.h"    
#include "opencv2/core/core.hpp"    
#include "opencv2/highgui/highgui.hpp"    
#include "opencv2/imgproc/imgproc.hpp"

//获取键盘输入
#include <conio.h>
#include <Windows.h>
using namespace std;
using namespace cv;
using namespace openni;
typedef struct {
	float x;
	float y;
	float z;
} vector3f;

#define SAMPLE_READ_WAIT_TIMEOUT 2000 //2000ms
void CheckOpenNIError(Status result, string status)
{
	if (result != STATUS_OK)
		cerr <<
### 使用 OpenNI深度图与彩色图合并生成三维点云 为了将深度图像和彩色图像融合并生成三维点云,通常会采用特定的库来简化这一过程。例如,在使用 Kinect 设备时,可以通过 SimpleOpenNI 库在 Processing 软件中轻松获取三维模型[^2]。 具体来说,对于 RGB-D 数据集中的每一帧,需要同步读取对应的彩色图像和深度图像,并将其换为三维空间中的点云数据。这一步骤涉及到了解码设备提供的原始数据流以及应用必要的校正算法以确保两种不同类型的图像能够正确对齐[^1]。 #### 获取真实的3D坐标 根据深度信息,可以获得精确的3D点云数据OpenNI 提供了一个名为 `ConvertProjectiveToRealWorld()` 的函数接口,用于将深度图像的数据化成基于 Kinect 坐标系的真实世界坐标下的3D数据[^3]。下面是一个简单的 Python 代码片段展示如何调用这个功能: ```python import openni # 初始化设备 dev = openni.Device.open_any() depth_stream = dev.create_depth_stream() # 开始采集数据 depth_stream.start() while True: frame = depth_stream.read_frame() # 对于每一个像素 (x, y),我们得到其 z 值(即距离) for x in range(frame.width): for y in range(frame.height): z_value = frame.get_distance(x, y) # Convert projective to real world coordinates using the provided function from OpenNI. point_3d = dev.convert_projective_to_real_world((x,y,z_value)) # 处理point_3d... ``` 这段代码展示了如何遍历整个深度图像,并针对每个像素位置计算出相应的实际物理坐标。需要注意的是,这里假设已经安装好了合适的驱动程序和支持包以便顺利运行上述操作。 一旦获得了这些三维点的位置信息,便可以进一步结合来自同一时刻拍摄到的颜色信息给各个点赋予颜色属性,从而构建出色彩丰富的完整场景表示形式——也就是所谓的带色彩纹理的三维点云
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值