kinect2出来时OpenNI已被水果公司收购,第三方的驱动支持只剩下libfreenect2了。
这里有个通过修改OpenNI实现kinect2支持的实现,没做测试。
当然libfreenect2也支持windows平台,但我按教程安装一直不成功,应该是环境变量的问题。windows还是用微软官方的SDK吧(仅支持windows 8及以上)
安装libfreenect2
参考官方维护的github
1)下载libfreenect2源码、升级包
git clone https://github.com/OpenKinect/libfreenect2.git
cd libfreenect2/depends
./download_debs_trusty.sh
2)安装build工具
sudo apt-get install build-essential cmake pkg-config
3)安装 libusb、TurboJPEG、OpenGL
sudo dpkg -i debs/libusb*deb
sudo apt-get install libturbojpeg libjpeg-turbo8-dev
sudo dpkg -i debs/libglfw3*deb; sudo apt-get install -f; sudo apt-get install libgl1-mesa-dri-lts-vivid
4)[可选项]安装OpenCL、CUDA、VAAPI、OpenNI2
安装方法见官网,我这里仅安装了CUDA
5)build工程
cd ..
mkdir build && cd build
cmake .. -DCMAKE_INSTALL_PREFIX=$HOME/freenect2
make
make install
./bin/Protonect 打开测试程序,应该就能看到图像了
使用libfreenect2
参考官方的API手册
该库支持 1)RGB图像
2)红外IR、深度图像
3)校准后的RGB+深度图像
4)GPU加速
目前存在的问题 1)话筒阵列可访问,但不支持directional audio
2)USB连接不稳定
libfreenect2的使用可以参考examples下的protonect工程
其使用OpenGL实现图像的渲染
在这里我使用OpenCV来处理图像,需要看手册里Frame类对图像数据的定义。
使用该Cmakelists.txt
CMAKE_MINIMUM_required(VERSION 2.8.12.1)
PROJECT(kinect2)
SET(CMAKE_CXX_FLAGS "-std=c++11")
SET(CMAKE_PREFIX_PATH ${CMAKE_PREFIX_PATH} $ENV{HOME}/freenect2/lib/cmake/freenect2)
SET(CMAKE_BUILD_TYPE DEBUG)
SET(CMAKE_C_FLAGS_DEBUG "-g -Wall")
FIND_PACKAGE(freenect2 required)
INCLUDE_DIRECTORIES("/usr/include/libusb-1.0")
INCLUDE_DIRECTORIES(${freenect2_INCLUDE_DIR})
FIND_PACKAGE(OpenCV required)
INCLUDE_DIRECTORIES(${OpenCV_INCLUDE_DIRS})
SET(KINECTCLASS src/kinect.cpp src/kinect.h)
ADD_EXECUTABLE(kinect2 ./main.cpp ${KINECTCLASS})
TARGET_LINK_LIBRARIES(kinect2 ${freenect2_LIBRARIES})
TARGET_LINK_LIBRARIES(kinect2 ${OpenCV_LIBS})
用QT打开即可
其中
SET(CMAKE_BUILD_TYPE DEBUG)
SET(CMAKE_C_FLAGS_DEBUG "-g -Wall")
是为了编译为debug版本便于调试