资源简介
在vs2013平台下用c++实现的通过Kinect获取场景点云数据并显示的程序。获取线程从Kinect中读取深度数据与图像数据,经坐标映射与融合后生成目标点云数据,通过boost的信号槽机制传输到主线程中并将其使用PCL提供的visualizer在窗口中加以显示。编译运行前需要配置PCL与Kinect2.0SDK两个外部依赖库。整体代码简单,思路清晰,适合刚入门的新手学习。
代码片段和文件信息
#include “PointCloudGrabber.h“
#include
#include
#include
#include
#include
#include
#include
#include
#include
PointCloudGrabber::PointCloudGrabber()
: _sensor(nullptr)
_mapper(nullptr)
_colorSource(nullptr)
_colorReader(nullptr)
_depthSource(nullptr)
_depthReader(nullptr)
_result(S_OK)
_colorWidth(1920)
_colorHeight(1080)
_colorBuffer()
_depthWidth(512)
_depthHeight(424)
_depthPointCount(512 * 424)
_depthBuffer(_depthPointCount)
_colorSpacePoints(512 * 424)
_cameraSpacePoints(512 * 424)
{
}
PointCloudGrabber::~PointCloudGrabber()
{
}
bool PointCloudGrabber::OpenDevice()
{
// Create Sensor Instance
_result = GetDefaultKinectSensor(&_sensor);
if (FAILED(_result)){
throw std::exception(“Exception : GetDefaultKinectSensor()“);
}
// Open Sensor
_result = _sensor->Open();
if (FAILED(_result)){
throw std::exception(“Exception : IKinectSensor::Open()“);
}
// Retrieved Coordinate Mapper
_result = _sensor->get_CoordinateMapper(&_mapper);
if (FAILED(_result)){
throw std::exception(“Exception : IKinectSensor::get_CoordinateMapper()“);
}
// Retrieved Color frame Source
_result = _sensor->get_ColorframeSource(&_colorSource);
if (FAILED(_result)){
throw std::exception(“Exception : IKinectSensor::get_ColorframeSource()“);
}
// Retrieved Depth frame Source
_result = _sensor->get_DepthframeSource(&_depthSource);
if (FAILED(_result)){
throw std::exception(“Exception : IKinectSensor::get_DepthframeSource()“);
}
// Retrieved Color frame Size
iframeDescription* colorDescription;
_result = _colorSource->get_frameDescription(&colorDescription);
if (FAILED(_result)){
throw std::exception(“Exception : IColorframeSource::get_frameDescription()“);
}
_result = colorDescription->get_Width(&_colorWidth); // 1920
if (FAILED(_result)){
throw std::exception(“Exception : iframeDescription::get_Width()“);
}
_result = colorDescription->get_Height(&_colorHeight); // 1080
if (FAILED(_result)){
throw std::exception(“Exception : iframeDescription::get_Height()“);
}
SafeRelease(colorDescription);
// To Reserve Color frame Buffer
_colorBuffer.resize(_colorWidth * _colorHeight);
// Retrieved Depth frame Size
iframeDescription* depthDescription;
_result = _depthSource->get_frameDescription(&depthDescription);
if (FAILED(_result)){
throw std::exception(“Exception : IDepthframeSource::get_frameDescription()“);
}
_result = depthDescription->get_Width(&_depthWidth); // 512
if (FAILED(_result)){
throw std::exception(“Exception : iframeDescription::get_Width()“);
}
_result = depthDescription->get_Height(&_depthHeight); // 424
if (FAILED(_res
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2017-09-10 09:14 PointCloudScanner\
目录 0 2017-09-10 09:14 PointCloudScanner\PointCloudScanner\
文件 997 2017-09-10 09:13 PointCloudScanner\PointCloudScanner.sln
文件 27136 2017-09-10 09:14 PointCloudScanner\PointCloudScanner.v12.suo
文件 7499 2017-09-09 21:51 PointCloudScanner\PointCloudScanner\PointCloudGrabber.cpp
文件 1533 2017-09-09 21:47 PointCloudScanner\PointCloudScanner\PointCloudGrabber.h
文件 1821 2017-09-10 09:06 PointCloudScanner\PointCloudScanner\PointCloudScanner.cpp
文件 3532 2017-09-10 09:14 PointCloudScanner\PointCloudScanner\PointCloudScanner.vcxproj
文件 1189 2017-09-10 09:14 PointCloudScanner\PointCloudScanner\PointCloudScanner.vcxproj.filters
相关资源
- PCL点云-RGBD图像ICP迭代最近点之点云配
- 点云数据滤波------数学形态学
- PCL点云拼接
- Kinect v2 跌到检测函数
- Windows下配置python_pcl全套资料
- 基于PCL、VTK的切片法计算三维模型的
- 基于Camshift+Kalman的多目标跟踪
- 激光雷达点云地平面校准 地面分割
- ntripclient-c++
- Kinect程序开发帮助文档C++
- VTK源码,读取obj、stl点云,生成重建
- 使用RANSAC提取平面
- 点云生成深度图,并保存深度图
- 通过MFC和OpenGL实现点云数据的提取和
- OpenGL+MFC+点云
- 完整的实时深度图平滑代码像素滤波
- OpenGL+MFC显示三维点云中每一个点的法
- Ndt+ICP配准算法亲测可用
- 三维激光点云数据,希望能用的着
- PCL测试程序
- DSS中的RTSPclientLib程序
- 点云PCL三维重建
- 点云数据(圆柱面)
- opencv2深度图滤波
- HTTPClient
- 利用组合惯导实现多帧点云拼接并迭
- HTTP Client C++实现
- 基于kinect的人体动作识别系统
- opencv+zed测距
- 点云圆柱提取代码
评论
共有 条评论