资源简介
或许大家的第一个问题就是询问该怎样使用Kinect来获取颜色信息图和深度信息图呢?这里就Kinect+OpenNI获取深度图和颜色图实验来回答这个问题 。
代码片段和文件信息
#include
#include //包含OpenNI的头文件
using namespace xn;//使用OpenNI库中的命名空间
//全局的OpenNI object
XnStatus g_status;
Context g_context;
ImageGenerator g_image_generator;
DepthGenerator g_depth_generator;
bool g_has_image_generator = true;
//全局的Qt object
QGraphicsPixmapItem *g_image_map;
QGraphicsPixmapItem *g_depth_map;
//CTimer类的定义
class CTimer : public Qobject
{
public:
void start() {
g_status = g_context.StartGeneratingAll();//开启设备读取数据的开关
if(g_status == XN_STATUS_OK) {
startTimer(33);//使用startTimer()启动定时器,每当时间到时会自动调用timerEvent()函数
}
else {
QMessageBox::critical(NULL “Create Data Error!“ xnGetStatusString(g_status));//显示创建数据失败,该消息框没有父窗口
}
}
private:
void timerEvent(QTimerEvent *) {
g_context.WaitAndUpdateAll();//更新数据
//颜色数据
if(g_has_image_generator) {
ImagemetaData image_map;
g_image_generator.GetmetaData(image_map);
//为g_image_map设置图片,图片的数据来源于外部硬件设备
g_image_map->setPixmap(QPixmap::fromImage(QImage(image_map.Data() image_map.XRes()
image_map.YRes() QImage::Format_RGB888)));
}
//深度数据
DepthmetaData depth_map;
g_depth_generator.GetmetaData(depth_map);
XnDepthPixel max_depth_value = depth_map.ZRes();
QImage depth_img(depth_map.XRes() depth_map.YRes() QImage::Format_ARGB32);//格式为ARGB32型的
for(unsigned int i = 0; i < depth_map.XRes(); i++)
for(unsigned int j = 0; j < depth_map.YRes(); j++)
{
XnDepthPixel depth_value_ij = depth_map(i j);//获取x,y处的坐标值
if(depth_value_ij == 0) {
depth_img.setPixel(i j qRgba(0 0 0 0));
}//如果捕捉不到深度信息,则将其设置为0
else {
float fscale = 1.0f*depth_value_ij/max_depth_value;//当前深度的比例因子
depth_img.setPixel(i j qRgba(255*(1-fscale) 0 255*fscale 255*(1-fscale)));
}
}
g_depth_map->setPixmap(QPixmap::fromImage(depth_img));
}
};
int main(int argc char **argv)
{
QApplication app(argc argv);
g_status = g_context.Init();//context初始化
if(g_status != XN_STATUS_OK) {
QMessageBox::critical(NULL “Context Initial Error!“ xnGetStatusString(g_status));
return -1;
}
// g_context.SetGlobalMirror(true);//设置全局镜像就像照镜子一样,与设置为false时的2张图片镜像
XnMapOutputMode xmode;//定义图像的输出模式
xmode.nXRes = 640;//x方向分辨率
xmode.nYRes = 480;//y方向分辨率
xmode.nFPS = 30;//帧率
//设置颜色节点属性
g_status = g_image_generator.Create(g_context);
if(g_status != XN_STATUS_OK) {
QMessageBox::critical(NULL “Image map create failed“ xnGetStatusString(g_status));
g_has_image_generator = false;
}
if( g_has_image_generator ) {
g_status = g_image
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 494639 2012-09-27 23:46 Kinect+OpenNI学习笔记之2(获取kinect的颜色图像和深度图像).pdf
文件 213940 2012-09-27 21:48 qt_viewer\debug\main.obj
文件 53248 2012-09-27 21:48 qt_viewer\debug\qt_viewer.exe
文件 502024 2012-09-27 21:48 qt_viewer\debug\qt_viewer.ilk
文件 638 2012-09-27 21:48 qt_viewer\debug\qt_viewer.intermediate.manifest
文件 2395136 2012-09-27 21:48 qt_viewer\debug\qt_viewer.pdb
文件 4536 2012-09-27 21:47 qt_viewer\main.cpp
文件 7103 2012-09-27 17:26 qt_viewer\Makefile
文件 5827 2012-09-27 17:26 qt_viewer\Makefile.Debug
文件 5819 2012-09-27 17:26 qt_viewer\Makefile.Release
文件 248 2012-09-27 17:23 qt_viewer\qt_viewer.pro
文件 17546 2012-09-27 23:47 qt_viewer\qt_viewer.pro.user
文件 1970176 2012-09-27 21:48 qt_viewer\vc100.pdb
目录 0 2012-09-27 23:48 qt_viewer\debug
目录 0 2012-09-27 23:48 qt_viewer\release
目录 0 2012-09-27 23:48 qt_viewer
----------- --------- ---------- ----- ----
5670880 16
相关资源
- Kinect体感机器人中文报告
- Kinect体感机器人上位机源码
- OpenNI-Windows-x86-2.1.0.msi
- 2D转3D版本代码Ver0.1
- kinectV2 抠图 自动拍照
- kinect v2.0 开发入门
- kinect体感书中英文对照
- 基于Kinect体感摄像头的手势识别算法
- Kinect+OpenNI学习笔记
- SensorKinect093-Bin-Win64-v5.1.2.1.msi
- simpleopenni 0.27 WIN3264
- KinectV2手指检测识别
- Kinect2的各种入门源码例程
- OPENNI手册
- OpenNI、OpenCV安装与开发环境配置
- OpenNI用户指南(中英对照版)
- kinect手势追踪
- kinect同时获取深度与彩色图片并保存
- Kinect2.0+Opencv人体骨骼捕捉及绘制Vis
- 深度图以及基于DIBR的2D转3D资料
- 基于高斯过程回归与马尔科夫随机场
- kinect 2.0 for Unity开发包
- Kinect应用开发实战(配套源码)
- [高清文字版]交互动画设计:Zbrush+A
- KinectV2 in Qt 在Qt中使用KinectV2编程
- 比较新的 openni-win64-1.5.4.0
- kinect彩色图像对齐到深度并显示结果
- kinect应用开发实战
- SensorKinect-v0.93-5.1.2.1-0
- 学Arduino玩转Kinect制作项目(英文原版
评论
共有 条评论