* 最近发现原来国外早就有大神了提供了Kinect手势识别的库,叫做CVRL FORTH HandTracker,跟踪效果很好(只要你的显卡性能够好),而且可以提供了Windows和LInux上运行的脚本,唯一的遗憾是Linux上只能用Kinect2跟踪手势,Kinect V2的话要自己提供深度图和彩色图。这是git上的链接:*
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上看到的一段视频,怎么样?你能得到一样的效果吗?
注意:
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,下载和安装方法:
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文件,下载地址: