资源简介
因为OpenNI可以获取到kinect的深度信息,而深度信息在手势识别中有很大用处,因此本文就来使用OpenNI自带的类来做简单的手势识别。识别的动作为4种,挥手,手移动,举手,往前推手。通过后面的实验可以发现,其实提供的类的效果非常不好。
开发环境:QtCreator2.5.1+OpenNI1.5.4.0+Qt4.8.2+OpenCV2.4.2
代码片段和文件信息
#include
#include
#include
using namespace xn;
using namespace std;
class COpenNI
{
public:
~COpenNI() {
context.Release();//释放空间
}
bool Initial() {
//初始化
status = context.Init();
if(CheckError(“Context initial failed!“)) {
return false;
}
context.SetGlobalMirror(true);//设置镜像
//产生图片node
status = image_generator.Create(context);
if(CheckError(“Create image generator error!“)) {
return false;
}
//产生深度node
status = depth_generator.Create(context);
if(CheckError(“Create depth generator error!“)) {
return false;
}
//视角校正
status = depth_generator.GetAlternativeViewPointCap().SetViewPoint(image_generator);
if(CheckError(“Can‘t set the alternative view point on depth generator!“)) {
return false;
}
status = gesture_generator.Create(context);
if(CheckError(“Create gesture generator error!“)) {
return false;
}
/*添加手势识别的种类*/
gesture_generator.AddGesture(“Wave“ NULL);
gesture_generator.AddGesture(“click“ NULL);
gesture_generator.AddGesture(“RaiseHand“ NULL);
gesture_generator.AddGesture(“MovingHand“ NULL);
return true;
}
bool Start() {
status = context.StartGeneratingAll();
if(CheckError(“Start generating error!“)) {
return false;
}
return true;
}
bool UpdateData() {
status = context.WaitNoneUpdateAll();
if(CheckError(“Update date error!“)) {
return false;
}
//获取数据
image_generator.GetmetaData(image_metadata);
depth_generator.GetmetaData(depth_metadata);
return true;
}
public:
DepthmetaData depth_metadata;
ImagemetaData image_metadata;
GestureGenerator gesture_generator;//外部要对其进行回调函数的设置,因此将它设为public类型
private:
//该函数返回真代表出现了错误,返回假代表正确
bool CheckError(const char* error) {
if(status != XN_STATUS_OK ) {
QMessageBox::critical(NULL error xnGetStatusString(status));
cerr << error << “: “ << xnGetStatusString( status ) << endl;
return true;
}
return false;
}
private:
XnStatus status;
Context context;
DepthGenerator depth_generator;
ImageGenerator image_generator;
};
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 351744 2012-10-02 08:41 Kinect+OpenNI学习笔记之5(使用OpenNI自带的类进行简单手势识别).pdf
文件 2640 2012-10-01 22:28 hand_detect\copenni.cpp
文件 62464 2012-10-02 00:33 hand_detect\debug\hand_detect.exe
文件 526156 2012-10-02 00:33 hand_detect\debug\hand_detect.ilk
文件 638 2012-10-02 00:33 hand_detect\debug\hand_detect.intermediate.manifest
文件 2550784 2012-10-02 00:33 hand_detect\debug\hand_detect.pdb
文件 310706 2012-10-02 00:33 hand_detect\debug\main.obj
文件 992 2012-10-01 22:31 hand_detect\hand_detect.pro
文件 17553 2012-10-02 08:41 hand_detect\hand_detect.pro.user
文件 2548 2012-10-02 00:33 hand_detect\main.cpp
文件 7059 2012-10-01 22:31 hand_detect\Makefile
文件 6176 2012-10-01 22:31 hand_detect\Makefile.Debug
文件 6166 2012-10-01 22:31 hand_detect\Makefile.Release
文件 2174976 2012-10-02 00:33 hand_detect\vc100.pdb
目录 0 2012-10-02 08:42 hand_detect\debug
目录 0 2012-10-02 08:42 hand_detect\release
目录 0 2012-10-02 08:42 hand_detect
----------- --------- ---------- ----- ----
6020602 17
- 上一篇:Windows 1.02
- 下一篇:多尺度hessian滤波器图像增强
相关资源
- 基于OpenCV3.0的手势识别.rar
- 2018年电赛手势识别tm4c123gh6pm做的主控
- 基于Kinect的三维重建
- opencv实现的手势识别,石头剪刀布的
- 基于opencv的手势识别程序,亲测可用
- OpenNI 官方版适用于Windows 32位系统
- 2018电子竞赛手势识别FDC2214
- 深度相机、Kinect及其应用
- kinect2.0获取深度图、彩色图,并利用
- Kinect2API文档
- openni和primesense驱动
- KinectFusion 和 ElasticFusion 三维重建方法
- kinect v2 API详细说明
- OpenNI获取三维点云并用OpenGL显示可旋
- 2018电子设计大赛TI杯D题手势识别 全功
- Opencv静态手势识别
- SensorKinect093-Bin-Win64-v5.1.2.1
- Kinect V2 SDK API说明文档
- PAJ7260u2手势识别传感器库文件、pcb、
- 2018年江苏省电赛手势识别题目报告和
- 基于HMM的手势识别
- 获取kinect的数据并在Qt中显示的类的设
- 手势识别算法全部介绍
- Unity结合Kinect2体感开发:KinectForWind
- kinect2_SDK_深度图到RGB的映射
- kinect控制ppt播放完整源码
- 通过Kinect v2.0+ VS2012+openCV2.4.9将彩色帧
- 基于FDC2214模块的手势识别装置
- Beginning Kinect Programming with Microsoft Ki
- kinect V2 学习资料
评论
共有 条评论