资源简介
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
相关资源
- Qt5实战项目之
- 基于QT开发的ARM/windows平台下的视频播
- ofdEditor.zip
- IEC61850客户端代码
- 基于QtOpenCV实现GraphCuts算法
- qt qss主题样式
- Qt虚拟仪表源码
- 基于Qt的学生公寓管理系统源码
- qt编写的word写字板
- qt5音乐播放器更新版 源码
- Qt 资源库 图片
-
QT 实现的mpla
yer后台KTV点歌系统 - Qt GUI 界面通用系统模板 源码
- zw_landeng1986-10598316-qTC275KIT.zip
- 基于QT的捕鱼达人小游戏
- Qt中文帮助手册简易版
- qt-vsaddin-msvc2017-2.2.2.vsix
- STM32+MQTT+SIM800使用AT指令实现
- PyQt5类继承图
- QT利用SMTP发送邮件Demo
- Qt样式表葵花宝典.zip
- Qt迷宫及路径
- 汉字转拼音,支持几乎所有汉字,已
- HanV1.0.rar
- QTaddressbook源码
- QT5自学教程
- QT5+VS2015制作的画图程序源代码
- Qt实现推箱子
- 用Qt做的射击小游戏
- Qt写的一个读取并展示网络地图的程序
评论
共有 条评论