资源简介

用的xtion(kinect也相同)和openni获取深度数据,转换为三维点云后在opengl中表示(用彩色数据作纹理),可用鼠标和键盘对三维点云进行旋转与缩放。

资源截图

代码片段和文件信息

#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 

using namespace std;
using namespace openni;
using namespace cv;

float xyzdata[480][640][3];
float texture[480][640][3];

void showdevice(){
// 获取设备信息  
Array aDeviceList;
OpenNI::enumerateDevices(&aDeviceList);

cout << “电脑上连接着 “ << aDeviceList.getSize() << “ 个体感设备.“ << endl;

for (int i = 0; i < aDeviceList.getSize(); ++i)
{
cout << “设备 “ << i << endl;
const DeviceInfo& rDevInfo = aDeviceList[i];
cout << “设备名: “ << rDevInfo.getName() << endl;
cout << “设备Id: “ << rDevInfo.getUsbProductId() << endl;
cout << “供应商名: “ << rDevInfo.getVendor() << endl;
cout << “供应商Id: “ << rDevInfo.getUsbVendorId() << endl;
cout << “设备URI: “ << rDevInfo.getUri() << endl;

}
}

void* GetDataFromXtion(void *p)
{
Status rc = STATUS_OK;

// 初始化OpenNI环境
OpenNI::initialize();

showdevice();

// 声明并打开Device设备。
Device xtion;
const char * deviceURL = openni::ANY_DEVICE;  //设备名
rc = xtion.open(deviceURL);

// 创建深度数据流
VideoStream streamDepth;
rc = streamDepth.create(xtion SENSOR_DEPTH);
if (rc == STATUS_OK)
{
// 设置深度图像视频模式
VideoMode mModeDepth;
// 分辨率大小
mModeDepth.setResolution(640 480);
// 每秒30帧
mModeDepth.setFps(30);
// 像素格式
mModeDepth.setPixelFormat(PIXEL_FORMAT_DEPTH_1_MM);

streamDepth.setVideoMode(mModeDepth);
streamDepth.setMirroringEnabled(false);

// 打开深度数据流
rc = streamDepth.start();
if (rc != STATUS_OK)
{
cerr << “无法打开深度数据流:“ << OpenNI::getExtendedError() << endl;
streamDepth.destroy();
}
}
else
{
cerr << “无法创建深度数据流:“ << OpenNI::getExtendedError() << endl;
}

// 创建彩色图像数据流
VideoStream streamColor;
rc = streamColor.create(xtion SENSOR_COLOR);
if (rc == STATUS_OK)
{
// 同样的设置彩色图像视频模式
VideoMode mModeColor;
mModeColor.setResolution(320 240);
mModeColor.setFps(30);
mModeColor.setPixelFormat(PIXEL_FORMAT_RGB888);

streamColor.setVideoMode(mModeColor);
// 解决镜像问题
streamColor.setMirroringEnabled(false);
// 打开彩色图像数据流
rc = streamColor.start();
if (rc != STATUS_OK)
{
cerr << “无法打开彩色图像数据流:“ << OpenNI::getExtendedError() << endl;
streamColor.destroy();
}
}
else
{
cerr << “无法创建彩色图像数据流:“ << OpenNI::getExtendedError() << endl;
}

if (!streamColor.isValid() || !streamDepth.isValid())
{
cerr << “数据流不合法“ << endl;
OpenNI::shutdown();
return NULL;
}

// 图像模式注册彩色图与深度图对齐
if (xtion.isImageRegistrationModeSupported(
IMAGE_REGISTRATION_DEPTH_TO_COLOR))
{
xtion.setImageRegistrationMode(IMAGE_REGISTRATION_DEPTH_TO_COLOR);
}

// 创建OpenCV图像窗口
namedWindow(“Depth Image“ CV_WINDOW_AUTOSIZE);
namedWindow(“Color Image“ CV_WINDOW_AUTOSIZE);

// 获得最大深度值
int iMaxDepth = streamDepth.getMaxPixelValue();    //iMaxDepth一般

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       4606  2015-11-03 19:34  3D_Cloud_Points\3D_Cloud_Points\3D_Cloud_Points.vcxproj

     文件        944  2015-11-03 15:57  3D_Cloud_Points\3D_Cloud_Points\3D_Cloud_Points.vcxproj.filters

     文件       1905  2015-11-12 16:13  3D_Cloud_Points\3D_Cloud_Points\Debug\3D_Cloud_Points.log

     文件        200  2015-11-12 16:13  3D_Cloud_Points\3D_Cloud_Points\Debug\3D_Cloud_Points.tlog\3D_Cloud_Points.lastbuildstate

     文件        922  2015-11-12 16:13  3D_Cloud_Points\3D_Cloud_Points\Debug\3D_Cloud_Points.tlog\cl.command.1.tlog

     文件      27330  2015-11-12 16:13  3D_Cloud_Points\3D_Cloud_Points\Debug\3D_Cloud_Points.tlog\CL.read.1.tlog

     文件        760  2015-11-12 16:13  3D_Cloud_Points\3D_Cloud_Points\Debug\3D_Cloud_Points.tlog\CL.write.1.tlog

     文件       1794  2015-11-12 16:13  3D_Cloud_Points\3D_Cloud_Points\Debug\3D_Cloud_Points.tlog\link.command.1.tlog

     文件       3832  2015-11-12 16:13  3D_Cloud_Points\3D_Cloud_Points\Debug\3D_Cloud_Points.tlog\link.read.1.tlog

     文件        744  2015-11-12 16:13  3D_Cloud_Points\3D_Cloud_Points\Debug\3D_Cloud_Points.tlog\link.write.1.tlog

     文件     715776  2015-11-12 16:13  3D_Cloud_Points\3D_Cloud_Points\Debug\vc120.idb

     文件     765952  2015-11-12 16:13  3D_Cloud_Points\3D_Cloud_Points\Debug\vc120.pdb

     文件     281263  2015-11-12 16:13  3D_Cloud_Points\3D_Cloud_Points\Debug\源.obj

     文件      12024  2015-11-04 11:57  3D_Cloud_Points\3D_Cloud_Points\xyzdata.txt

     文件      11848  2015-11-12 16:13  3D_Cloud_Points\3D_Cloud_Points\源.cpp

     文件   38535168  2015-11-12 16:26  3D_Cloud_Points\3D_Cloud_Points.sdf

     文件        991  2015-11-03 15:52  3D_Cloud_Points\3D_Cloud_Points.sln

    ..A..H.     31232  2015-11-12 16:26  3D_Cloud_Points\3D_Cloud_Points.v12.suo

     文件     112128  2015-11-12 16:13  3D_Cloud_Points\Debug\3D_Cloud_Points.exe

     文件    1915964  2015-11-12 16:13  3D_Cloud_Points\Debug\3D_Cloud_Points.ilk

     文件    3182592  2015-11-12 16:13  3D_Cloud_Points\Debug\3D_Cloud_Points.pdb

     目录          0  2015-11-12 16:13  3D_Cloud_Points\3D_Cloud_Points\Debug\3D_Cloud_Points.tlog

     目录          0  2015-11-12 16:13  3D_Cloud_Points\3D_Cloud_Points\Debug

     目录          0  2015-11-12 16:13  3D_Cloud_Points\3D_Cloud_Points

     目录          0  2015-11-10 21:30  3D_Cloud_Points\Debug

     目录          0  2015-11-12 16:26  3D_Cloud_Points

----------- ---------  ---------- -----  ----

             45607975                    26


评论

共有 条评论