Kinect+OpenNI学习笔记之7(OpenNI自带的类实现手部跟踪)
摘要:前言 本文主要介绍使用OpenNI中的HandsGenerator来完成对人体手部的跟踪,在前面的文章Kinect+OpenNI学习笔记之5(使用OpenNI自带的类进行简单手势识别)中已经介绍过使用GestureGenerator这个类来完成对几个简单手势的识别,这次介绍的手部跟踪是在上面简单手势识别的结果上开始跟踪的,这是OpenNI的优点,微软的SDK据说是不能单独对手部进行跟踪,因为使用MS的SDK需要检测站立人体的骨骼,然后找出节点再进行跟踪,不懂最新版本的是否支持这个功能。而此节讲的OpenNI完成手部的跟踪就不要求人必须处于站立姿势。 开发环境:QtCreator2.5....
阅读全文
posted @
2012-10-11 19:54
tornadomeet
阅读(5851)
推荐(1) 编辑
Kinect+OpenNI学习笔记之6(获取人体骨架并在Qt中显示)
摘要:前言 MS的kinec SDK和OpenNI都提供了人体骨骼跟踪的算法,人体骨骼跟踪算法在kinect人体行为识别中非常重要,该识别过程通常被用来作为行为识别的第一步,比如说,通过定位人体中的骨骼支架,可以提取出人手的部位,从而可以把手的部分单独拿出来分析,这样就达到了手势的定位,而后面的手势识别则可以在刚刚定位出的领域进行处理。总而言之,一套有效的人体骨架追踪算法在kinect的一系列应用中非常有用,不过MS SDK和OpenNI虽然都提供了该算法类的直调用,但是其源码并没有开放,毕竟这是人家最核心的东东。 开发环境:QtCreator2.5.1+OpenNI1.5.4.0+Qt4....
阅读全文
posted @
2012-10-03 10:48
tornadomeet
阅读(10970)
推荐(0) 编辑
Qt学习之路_14(简易音乐播放器)
摘要:前言 这一节实现一个简易的音乐播放器,其音乐播放的核心功能是采用Qt支持的Phonon框架,该框架在前一篇博文Qt学习之路_13(简易俄罗斯方块) 中已经使用过了,在俄罗斯方块中主要是用来设置背景音乐和消行的声音的。这里用这个框架同样是用来播放,暂停等多媒体的各种控制功能,另外该框架可以自动获取音频文件的一些信息,这样我们在设计播放列表时可以获取这些信息,比如歌手名,专辑名,时长,文件名等等。程序中桌面歌词的实现是继承了QLabel类,然后使用3层文本显示,最上面一层采用渐进显示的方式来达到歌词播放的动态效果。 实验的参考资料为http://www.yafeilinux.com/网站上...
阅读全文
posted @
2012-09-23 18:37
tornadomeet
阅读(57672)
推荐(8) 编辑
Qt学习之路_13(简易俄罗斯方块)
摘要:前言 这一节主要学习在Qt中怎样使用图形视图框架,实验完成的是一个简易的俄罗斯方块游戏,有了图形视图框架的支持,该游戏的设计变得非常简单,不需要考虑很多复杂的算法,比如说方块的碰撞检测,旋转,视图的设计等。从本实验中可以学到2D图形的绘制,游戏的逻辑设计,图形视图的应用,动画设置,背景音乐的添加,Phonon框架的应用等知识。实验的参考资料为http://www.yafeilinux.com/ 网站上yafei作者提供的代码,本人只是看懂其源码然后自己敲了一遍,代码做了稍微的改变,其设计方法和技巧全是原创作者yafei的功劳。 实验说明 注意本实验没有使用QtDesigner来设计界...
阅读全文
posted @
2012-09-22 19:24
tornadomeet
阅读(34851)
推荐(7) 编辑
Qt学习之路_12(简易数据管理系统)
摘要:前言 最近从大陆来到台湾,之间杂事很多,挤不出时间来更新博客… 这次主要是通过做一个简易的数据库管理系统,来学习在Qt中对数据库,xml,界面的各种操作,进一步熟悉Qt。一般而言数据通常存在文件,数据库,xml中,本文主要是介绍了sqlite,xml这2种存储数据的方法,实现了一个家用电器产品的销售小软件。参考资料为http://www.yafeilinux.com/ 代码基本也是作者yafei的,我只是看懂一些代码然后手动敲入加稍微修改而已。反正以学习他人的代码来进一步掌握Qt编程。 实验过程 该实验分为3个部分,商品管理,销售统计,和修改密码。 商品管理: 在程序运行时,已...
阅读全文
posted @
2012-09-19 21:15
tornadomeet
阅读(39504)
推荐(7) 编辑
PCA算法学习_1(OpenCV中PCA实现人脸降维)
摘要:前言: PCA是大家经常用来减少数据集的维数,同时保留数据集中对方差贡献最大的特征来达到简化数据集的目的。本文通过使用PCA来提取人脸中的特征脸这个例子,来熟悉下在oepncv中怎样使用PCA这个类。 开发环境:ubuntu12.04+Qt4.8.2+QtCreator2.5.1+opencv2.4.2 PCA数学理论: 关于PCA的理论,资料很多,公式也一大把,本人功底有限,理论方面这里就不列出了。下面主要从应用的角度大概来讲讲具体怎么实现数据集的降维。把原始数据中每个样本用一个向量表示,然后把所有样本组合起来构成一个矩阵。当然了,为了避免样本的单位的影响,样本集需要标准化。求该...
阅读全文
posted @
2012-09-06 11:13
tornadomeet
阅读(58608)
推荐(3) 编辑
Qt学习之路_11(简易多文档编辑器)
摘要:前言: 本文将介绍怎样用Qt做一个简单的多文档编辑器,该实验的过程中主要涉及到Qt窗口的设计,菜单栏(包括右击菜单),工具栏,状态栏,常见的文本文件等操作。参考资料为网址上的一个例子:http://www.yafeilinux.com/ 本来是在ubuntu下做这个实验的,可是一开始建立菜单栏等时,里面用的是中文,运行后中文就是不显示.在网上找了2天的办法,各种手段都试过了,什么编码方式啊,什么实用QTextCodec这个类啊都试过了,没成功。很不爽,暂时还是转到windows下吧。在ubuntu下只是简单的设计了该程序的界面,然后把那些代码弄到windows下后,打开main.p...
阅读全文
posted @
2012-09-02 17:37
tornadomeet
阅读(16907)
推荐(3) 编辑
OpenGL_Qt学习笔记之_07(闪烁的星星)
摘要:这一小节我们要完成的任务是:将一张背景是黑色,中间是白亮色的星星图片和五颜六色的颜色进行色彩融合,变成一颗彩色的星星。并且让这些星星自转和公转,可以控制自转和公转的速度,另外也能控制所有的星星是否能够闪烁。 实验基础 色彩融合知识: 刚开始提到由黑白的星星变成彩色的星星用到的是色彩融合的知识,关于色彩融合,在上篇文章OpenGL_Qt学习笔记之_06(纹理滤波和光照)已经有了个简单的介绍,不过该知识点并没有想象中的那么简单。当我们有了一些简单的色彩混合知识后,可以通过下面这个函数来更一步加深我们的理解。 void glColor4f(GLfloat red,GLfloat gre...
阅读全文
posted @
2012-08-26 10:26
tornadomeet
阅读(7941)
推荐(2) 编辑
OpenGL_Qt学习笔记之_06(纹理滤波、光照和色彩融合)
摘要:本次实验主要是学习下opengl中光照的使用方法,opengl中的光照分为环境光,漫射光,镜面光,反射光4种,这里主要是学习环境光和漫射光的设置,同时对比下opengl中支持的几种纹理滤波方式的效果,另外也可以加入色彩融合效果。 纹理滤波 在上篇文章OpenGL_Qt学习笔记之_05(纹理映射)中我们采用的是GL_LINEAR方式进行滤波的,opengl还支持GL_NEAREST, GL_NEAREST_MIPMAP_NEAREST, GL_LINEAR_MIPMAP_NEAREST, GL_NEAREST_MIPMAP_LINEAR, GL_LINEAR_MIPMAP_LI...
阅读全文
posted @
2012-08-25 10:55
tornadomeet
阅读(12427)
推荐(0) 编辑
OpenGL_Qt学习笔记之_05(纹理映射)
摘要:纹理映射基础知识 什么叫纹理映射,一开始我也不明白,感觉这个词好专业(毕竟没有学过图形学),后面经过网上查找资料和这次实验稍微理解了点。纹理映射简单的讲,就是把一个纹理(其实说白了,纹理可以理解为一幅图像)映射到空间物体的表面上,因此纹理映射也叫贴图,这个表明不一定是矩形,比如说我可以是球面,或者是任意曲面。在上一篇文章OpenGL_Qt学习笔记之_04(3D图形的绘制和旋转)中,我们绘制的空间体的表面都是一些光滑的颜色,如果要在其表面采用那种方法绘制图像的话,则必须利用微分的思想,一个一个的绘制小图像,然后拼接起来,可想而知,这个过程是多么的复杂,opengl的纹理映射就可以很好的...
阅读全文
posted @
2012-08-24 20:10
tornadomeet
阅读(14015)
推荐(2) 编辑
OpenGL_Qt学习笔记之_04(3D图形的绘制和旋转)
摘要:绘制四棱锥 四棱锥由5个面构成一个封闭的立体图,其中4个共顶点的侧面是三角形,底面是个四边形。如果我们要绘制一个3D的四棱锥只需要绘制这5个面即可,绘制的方法和前一篇文章OpenGL_Qt学习笔记之_03(平面图形的着色和旋转)的相同。只不过这里的顶点坐标是3维的,所以图像深度那一维不一定为0。因此我们可以事先计算好四棱锥各个顶点的坐标,这对学过立体几何的人来说应该是小case了。然后绘制每个面就可以。 注意,在opengl中绘制每个面时,所有面给出的顶点的顺序都要按照逆时针或者顺时针(我这里采用的是逆时针),这样才能保证所绘制出来的图像时正确的。 现在我们在paintGL中开始绘制...
阅读全文
posted @
2012-08-24 15:41
tornadomeet
阅读(19143)
推荐(0) 编辑
OpenGL_Qt学习笔记之_03(平面图形的着色和旋转)
摘要:在这一节中主要简单介绍下怎样给平面几何着色,以及怎样让绘制出来的几何图形旋转起来。在上一节OpenGL_Qt学习笔记之_02(绘制简单平面几何图形) 中已经介绍了如何利用opengl画一些简单的图像,那么这一节就在上面的基础上给它着色,且让他旋转。 实验基础 首先来看着色,其实着色在上篇文章中已经用过,使用的是函数glColor3f()。一旦我们使用这个函数着色后且不更改颜色,则后面所绘的图形都是这个颜色了。我们给多边形着色时,表面上看都是给它的顶点着色,其实因为我们在initializeGL()函数中已经设置过glShapeModel(GL_SMOOTH),即颜色阴影是平滑模式...
阅读全文
posted @
2012-08-23 21:47
tornadomeet
阅读(11239)
推荐(1) 编辑
OpenGL_Qt学习笔记之_02(绘制简单平面几何图形)
摘要:本文来讲讲怎样使用opengl来画平面几何图形,这一节本来是很简单的,因为某些问题都弄大半天了。当然,这还是按照NeHe的教程来的学习的。这次实现的功能是在窗口中画一个三角形,一个矩形,一个圆形。首先来简单的看一下opengl中的基本坐标规则,如下图所示: 假设左下角那个点是人的眼睛观察的位置,则向左为x正方向,向上为y的正方向(这点与opencv中不同),向里为z的正方向。下面来看看怎么绘制平面几何图形。在设置好需要画的几何图形的属性后,比如颜色信息,就以glBegin()开始,以glEnd()结束,glBegin()中的参数为所画几何图形的类型,比如说GL_ TRIANGLES代表三角形.
阅读全文
posted @
2012-08-23 15:56
tornadomeet
阅读(21849)
推荐(4) 编辑
OpenGL_Qt学习笔记之_01(创建一个OpenGL窗口)
摘要:很早就想学opengl的,一直没时间,今天心血来潮初步了解了下opengl。Opengl是对2D和3D图形支持很好,有非常多的优化函数,因为opengl的主要目标是图形功能函数上,所以它对图形界面的支持并不完善。当然了,作为一个跨平台的开源库,这是能理解的,因为每个平台开发界面用的工具不同,如果它只支持其一,那么私心也太重了,还不如节省精力放在核心的代码上。Qt的UI函数很多,它的Opengl封装很好,将opengl的函数和Qt的界面结合了起来,这主要是通过Qt中QGLWidget这个类来实现。所以一般我们开发opengl,且要用到Qt的界面时,这些类都可以从QGLWidget继承过来。本次试
阅读全文
posted @
2012-08-22 22:30
tornadomeet
阅读(47486)
推荐(2) 编辑
目标跟踪学习笔记_5(opencv中kalman点跟踪例子)
摘要:一些网络资料 关于Kalman滤波器的理论,其数学公式太多,大家可以去查看一些这方面的文献.下面这篇文章对Kalman滤波做了个通俗易懂的介绍,通过文章举的例子可以宏观上理解一下该滤波器,很不错,推荐一看: http://www.cnblogs.com/feisky/archive/2009/11/09/1599247.html, 他的另一篇博客http://www.cnblogs.com/feisky/archive/2009/12/04/1617287.html中介绍了opencv1.0版本的卡尔曼滤波的结构和函数定义等。 另外博文:http://blog.csdn.net/o...
阅读全文
posted @
2012-08-19 15:00
tornadomeet
阅读(44934)
推荐(3) 编辑
特征点检测学习_2(surf算法)
摘要:在上篇博客特征点检测学习_1(sift算法)中简单介绍了经典的sift算法,sift算法比较稳定,检测到的特征点也比较多,其最大的确定是计算复杂度较高。后面有不少学者对其进行了改进,其中比较出名的就是本文要介绍的surf算法,surf的中文意思为快速鲁棒特征。本文不是专门介绍surf所有理论(最好的理论是作者的论文)的,只是对surf算法进行了下整理,方便以后查阅。 网上有些文章对surf做了介绍,比如: http://wuzizhang.blog.163.com/blog/static/78001208201138102648854/ surf算法原理,有一些简单介绍. ht...
阅读全文
posted @
2012-08-17 23:51
tornadomeet
阅读(79728)
推荐(8) 编辑
特征点检测学习_1(sift算法)
摘要:sift算法在cv领域的重要性不言而喻,该作者的文章引用率在cv界是number1.本篇博客只是本人把sift算法知识点整理了下,以免忘记。本文比较早的一篇博文opencv源码解析之(3):特征点检查前言1中有使用opencv自带的sift做了个简单的实验,而这次主要是利用Rob Hess的sift源码来做实验,其实现在的opencv版本中带的sift算法也是Rob Hess的,只是稍微包装了下。 首先网上有不少文章介绍了sift算法,写得都不错,比如: http://www.cnblogs.com/cfantaisie/archive/2011/06/14/2080917.html...
阅读全文
posted @
2012-08-16 22:25
tornadomeet
阅读(43287)
推荐(6) 编辑
总结系列_13(Qt使用总结,续...)
摘要:QtCreator中使用的是MinGW进行编译的,所以在windows下如果想要下载QtCreator就需要下载对应mingw的版本,而不是vs的,否则是编译不了的。或者自己下载Qt源码库,用Cmake中选中MinGW重新编译即可。所以如果安装Qt libraries 4.8.2 for Windows (minGW 4.4, 318 MB),则必须先安装QtCreator,因为QtCreator安装过程中会自动安装MinGW,而Qt libraries 4.8.2 for Windows (minGW 4.4, 318 MB)的安装又必须使用MinGW。因此这2者的顺序不可颠倒。但是自从Qt
阅读全文
posted @
2012-08-09 09:33
tornadomeet
阅读(10960)
推荐(1) 编辑
Qt学习之路_10(Qt中statusBar,MessageBox和Timer的简单处理)
摘要:QStatus的使用: 众所周知,状态栏一般显示系统的状态信息,比如进度,鼠标所在的行列等信息。这次是个简单的实验,在状态栏中加入进度条和label,以及用状态栏自带的方法显示信息,显示信息持续的时间可以由参数来确定。 注意状态栏下的addWidget和addPermenentWidge方法不同,addPermenentWidget是永久固定显示的,里面的内容不会更改,也不会被覆盖,而addWidget加入的widget在必要时候会被更改和覆盖。 让状态栏显示文本不是采用setText()方法,而是采用showMessage().其第二个参数为显示该内容持续的时间,以毫秒为单位。 ...
阅读全文
posted @
2012-07-31 19:33
tornadomeet
阅读(13443)
推荐(1) 编辑
Qt学习之路_9(Qt中Item Widget初步探索)
摘要:Qt界面设计中有model-based的List View,有Item-based的List Widget,关于这2者到底有什么区别,暂时也没弄太明白,这些都是界面设计中的设计模式,从MVC发展而来。以后用到的时候自然会明白的。 一般简单的都是用Item-based的List Widget,Qt中给出了List Widget,Tree Widget,Tabel Widget三种,这里就简单了解一下List Widget和Tree Widget的使用。Tabel Widget的使用应该也类似。 List Widget的使用 List Widget的使用比较简单,加入数据时直接用addIt...
阅读全文
posted @
2012-07-31 11:51
tornadomeet
阅读(24062)
推荐(0) 编辑