Kinect2手势识别/手势跟踪-HandTracker/OpenNI/Linux or Windows

* 最近发现原来国外早就有大神了提供了Kinect手势识别的库,叫做CVRL FORTH HandTracker,跟踪效果很好(只要你的显卡性能够好),而且可以提供了Windows和LInux上运行的脚本,唯一的遗憾是Linux上只能用Kinect2跟踪手势,Kinect V2的话要自己提供深度图和彩色图。这是git上的链接:*

https://github.com/FORTH-ModelBasedTracker/HandTracker

1、WIndows

os:64 bit windows8 or later
硬件:主要是显卡:支持CUDA加速
驱动:Visual C++ 64bit Redistributable Packages for Visual Studio 2013
OpenNI-Win64
KinectSDK-v2.0
Sensor-Win64
最新的CUDA驱动
环境:python2.7

实现步骤:
first:
安装CUDA驱动

second
安装anaconda(> https://www.continuum.io/downloads),打开Anaconda Prompt
这里写图片描述
输入命令conda install numpy安装numpy,并输入conda update numpy更更新numpy.

third:
按顺序安装openNI1和openNI sensor,并安装KinectSDK,打开SDK Browser 并运行第一个Kinect Configutation Verifier确定能连接上你的Kinect,如图所示:
这里写图片描述

forth:
cmd上输入python以确定当前环境是python2.7(64位),如图:
这里写图片描述

fifth:
在git里下载在运行脚本(如果用的是kinect2请下载Kinece2Input版本),并下载它提供的不开源的库MBV_PythonAPI_Win_1.1,从git上他提供了下载地址

sixth:
解压HandTracker-Kinect2Input并把MBV_PythonAPI_Win_1.1解压到HandTracker-Kinect2Input的根目录(最好别解压到其它地方,因为路径在别的地方运行时可能出错)

seventh:
在cmd命令窗口设置环境变量(就是解压下来的MBV_PythonAPI_Win_1.1包的根目录路径):

set MBV_LIBS=c:\Users\User\Documents\FORTH\HANDTRACKER

这里写图片描述

eighth:
在cmd窗口运行runme.bat,如果没有意外很快就可以看到图像(中间是一只模拟的大手)
这里写图片描述

ninth:
把右手对准上面显示的窗口的模拟大手,让后点击键盘S键就可以开始手势跟踪,这里我就不录视频了,贴出我在youtub上看到的一段视频,怎么样?你能得到一样的效果吗?

https://youtu.be/GLEFalFogAA

注意:
1、即使是使用Kinect2也不要去用Openni2,因为这个库是基于OpenNI开发的
2、安装完openNI之后Niviewer是用不了的(提示连接不上设备),没关系,我们不用Niviewer
3、运行的runme.bat文件就是在里面设置了运行的环境变量来指定库文件,也可以自己在系统设置环境变量PATH和PYTHONPATH,将路径添加进去
4、有一个oni文件是用Openni记录下来的动作数据(应该就是深度图和彩色图),可以调用这个文件测试手势识别效果(此时不需要连接kinect)
5、这里是该库的开发者提供的驱动和openNI,提供给大家,防止因为版本问题而造成运行
http://cvrlcode.ics.forth.gr/web_share/OpenNI/OpenNI_SDK/
6、如果运行runme.bat文件时出现了import error,那就是openNI版本不对或者别的上面提到的一些依赖没安装好,这时候不用去google搜索是什么 原因,自己按照上面的说明一个个排查就可以了,再重申一遍,版本不是越新越好的,SDK和CUDA要最新的,别的就对应版本就好了

2、Linux (Kinect V1)

os:64bit Ubuntu 14.04
硬件:主要是显卡:支持CUDA加速
依赖:安装一下依赖:

sudo apt-get install libopencv-dev libtbb2 python-numpy python-opencv

如果运行的是openNI1,还要添加一下依赖来使用它提供的例子:

sudo apt-get install libopenni0 libopenni-sensor-primesense0 

驱动:
OpenNI driver
Kinect driver(libfreenect)
Latest CUDA driver
Sensor-Bin-Linux
注意:在linux上并没有提供kinect2的图形采集函数,要用kinect2要自己捕获彩色图和深度图并将Kinect的内参和外参提供给这个库

实现步骤:
step1:
安装libfreenect,下载和安装方法:

https://github.com/OpenKinect/libfreenect/

step2:
安装openNI,并尝试连接kinect并运行NiViewer,若出现彩色图和深度图则说明安装成功
注意:如果编译安装libfreenect时不是使用默认的路径,则需要将freenect路径指定给第三方库,也就是这里的openNI,否则运行会失败

step3:
安装CUDA等

step4:
将handtracker库和运行脚本解压,并将库防盗运行脚本的路径下,并设置环境变量:

export MBV_LIBS=/home/user/FORTH/HANDTRACKER

step5:
运行runme.sh脚本文件,顺利的话就可以看到模拟的大手

step6:
将手对准并按下S键开始手势跟踪

注意:
1、并不能用在Kinect2上,如果要用到Kinect2上,需要提供深度彩色图和相机参数数据,可参考:

https://github.com/FORTH-ModelBasedTracker/HandTracker/issues/48

2、若要使用Kinect进行图像实时采集并使用这个库进行手势跟踪,可以更改HandObjectTracking.py文件中的下面这行代码

    # User should define a path to a saved sequence in oni format.
    # Set path to empty string to perform live capture from an existing sensor.
    oniPath = 'loop.oni'
    acq = Acquisition.OpenNIGrabber(True, True, 'media/openni.xml', oniPath, True)
    acq.initialize()

把oniPath = ‘loop.oni’更改为oniPath = ”,然后连接上Kinect就可以了

3、如果想要用开发者记录的数据(oni)来检测手势跟踪,也就是没有做上面第二步失败了,可以用别的oni文件,下载地址:

http://cvrlcode.ics.forth.gr/handtracking/?page_id=7

  • 4
    点赞
  • 45
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值