资源简介
COpenNI这个类主要是初始化kinect设备,并获取深度图像和颜色图像,参加上一篇博客的初始化过程步骤,如果遇到错误,则有相应的错误处理过程。CKinectReader类是将COpenNI这个类读取到的结果显示在Qt的界面上的。因此一个类是负责与硬件Kinect打交道,一个类是负责与人(界面显示)打交道的。具体的过程见上篇文章的分析和后面的代码。

代码片段和文件信息
#include
#include
#include
#include “copenni.cpp“ //要包含cpp文件,不能直接包含类
#include
using namespace std;
class CKinectReader: public Qobject
{
public:
//构造函数用构造函数中的变量给类的私有成员赋值
CKinectReader(COpenNI &openni QGraphicsScene &scene) : openni(openni) scene(scene) {
test = 0.0;
}
~CKinectReader() {
scene.removeItem(image_item);
scene.removeItem(depth_item);
delete [] p_depth_argb;
}
bool Start(int interval = 33) {
openni.Start();//因为在调用CKinectReader这个类的之前会初始化好的所以这里直接调用Start了
image_item = scene.addPixmap(QPixmap());
image_item->setZValue(1);
depth_item = scene.addPixmap(QPixmap());
depth_item->setZValue(2);
openni.UpdateData();
p_depth_argb = new uchar[4*openni.depth_metadata.XRes()*openni.depth_metadata.YRes()];
startTimer(interval);//这里是继承Qobject类,因此可以调用该函数
return true;
}
float test ;
private:
COpenNI &openni; //定义引用同时没有初始化因为在构造函数的时候用冒号来初始化
QGraphicsScene &scene;
QGraphicsPixmapItem *image_item;
QGraphicsPixmapItem *depth_item;
uchar *p_depth_argb;
private:
void timerEvent(QTimerEvent *) {
openni.UpdateData();
//这里使用const,是因为右边的函数返回的值就是const类型的
const XnDepthPixel *p_depth_pixpel = openni.depth_metadata.Data();
unsigned int size = openni.depth_metadata.XRes()*openni.depth_metadata.YRes();
//找深度最大值点
XnDepthPixel max_depth = *p_depth_pixpel;
for(unsigned int i = 1; i < size; ++i)
if(p_depth_pixpel[i] > max_depth )
max_depth = p_depth_pixpel[i];
test = max_depth;
//将深度图像格式归一化到0~255
int idx = 0;
for(unsigned int i = 1; i < size; ++i) {
//一定要使用1.0f相乘,转换成float类型,否则该工程的结果会有错误因为这个要么是0,要么是1,0的概率要大很多
float fscale = 1.0f*(*p_depth_pixpel)/max_depth;
if((*p_depth_pixpel) != 0) {
p_depth_argb[idx++] = 255*(1-fscale); //蓝色分量
p_depth_argb[idx++] = 0; //绿色分量
p_depth_argb[idx++] = 255*fscale; //红色分量,越远越红
p_depth_argb[idx++] = 255*(1-fscale); //距离越近,越不透明
}
else {
p_depth_argb[idx++] = 0;
p_depth_argb[idx++] = 0;
p_depth_argb[idx++] = 0;
p_depth_argb[idx++] = 255;
}
++p_depth_pixpel;//此处的++p_depth_pixpel和p_depth_pixpel++是一样的
}
//往item中设置图像色彩数据
image_item->setPixmap(QPixmap::fromImage(
QImage(openni.image_metadata.Data() openni.image_metadata.XRes() openni.image_metadata.YRes()
QImage::Format_RGB888)));
//往item中设置深度数据
depth_item->setPixmap(QPixmap::fromImage(
QImage(p_depth_argb openni.depth_metadata.XRes() openni.depth_meta
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 326178 2012-09-29 09:47 Kinect+OpenNI学习笔记之3(获取kinect的数据并在Qt中显示的类的设计).pdf
文件 3325 2012-09-29 09:21 copenni\ckinectreader.cpp
文件 2132 2012-09-29 09:01 copenni\copenni.cpp
文件 274 2012-09-28 14:39 copenni\copenni.pro
文件 17538 2012-09-29 09:49 copenni\copenni.pro.user
文件 142455 2012-09-29 09:21 copenni\debug\ckinectreader.obj
文件 49664 2012-09-29 09:21 copenni\debug\copenni.exe
文件 576700 2012-09-29 09:21 copenni\debug\copenni.ilk
文件 638 2012-09-29 09:21 copenni\debug\copenni.intermediate.manifest
文件 142307 2012-09-29 09:21 copenni\debug\copenni.obj
文件 2477056 2012-09-29 09:21 copenni\debug\copenni.pdb
文件 2030 2012-09-28 14:38 copenni\debug\copnni.obj
文件 230439 2012-09-29 09:21 copenni\debug\main.obj
文件 533 2012-09-29 08:53 copenni\main.cpp
文件 7083 2012-09-28 15:10 copenni\Makefile
文件 6015 2012-09-28 15:10 copenni\Makefile.Debug
文件 6023 2012-09-28 15:10 copenni\Makefile.Release
文件 1970176 2012-09-29 09:21 copenni\vc100.pdb
目录 0 2012-09-29 09:49 copenni\debug
目录 0 2012-09-29 09:49 copenni\release
目录 0 2012-09-29 09:49 copenni
----------- --------- ---------- ----- ----
5960566 21
相关资源
- 酒店管理系统基于Qt Creator5)
- vtk QT做的三维地质可视化系统2of2
- Qt局域网聊天软件
- Qt Creator opengl实现四元数鼠标控制轨迹
- QT局域网聊天系统(基于QT5.修改过)
- qt-电子点菜系统
- C 餐厅叫号系统(QT平)
- QT 实现文件下载
- qt图像处理
- QT,JPEG解码源代码(已完成)
- Qt 播放音频文件
- Qt 读取16进制的data文件
- MQTT+串口(usart)透传
- 易语言QQTEA算法源码
- VC工程转Qt工程文件的工具
- MQTT推送Demo
- 基于Linux、QT的视频监控系统的设计与
- Qt 百度地图 定位
- QT酷炫界面开发指南《QmlBook》
- Ubuntu下操作Excel,qt代码
- Qt图片浏览器 --基于Qt的Graphics View f
- qtnribbon2破解
- Qt软件开发 完整项目代码
- MQTT_3.1protocol_Specific中文版
- 在QT中使用RTP进行视频的采集和传输
- Mini6410 Qt4和Qtopia编程开发指南
- Qt实现Code39条形码
- qt_ffmpeg_mp4_export_and_import.zip
- QT5.5入门与项目实战
- Huffman Compress 霍夫曼编码 压缩 解压缩
评论
共有 条评论