Ubuntu16.04下编译libfreenect2和PCL以支持KinectV2点云处理
原因就是由于OpenNI2.2不支持Kinect V2,导致我没法在PCL中调用Kinect设备。
在Windows上的尝试失败了,来一波Linux下的尝试。
话不多说,下面是实实在在的解题步骤。
第一步:libfreenect2的编译
注意:libfreenect2是Kinect v2的开源驱动。如果用的是Kinect v1,出门右转git搜索libfreenect1。
项目地址:libfreenect2
参照的官网Linux编译指导:Linux
注意:我的作业本是Ubuntu16.04的,其他作业本请点进去仔细查看指导Linux,有很多不同之处。
以下是16.04下的编译步骤:
下载libfreenect2源码
1 | git clone https://github.com/OpenKinect/libfreenect2.git |
安装编译工具
1 | sudo apt-get install build-essential cmake pkg-config |
安装linusb
1 | sudo apt-get install libusb-1.0-0-dev |
安装TurboJPEG
1 | sudo apt-get install libturbojpeg libjpeg-turbo8-dev |
安装OpenGL
1 | sudo apt-get install libglfw3-dev |
安装OpenCL(可选,我没选,选择安装的同学查看 Install OpenCL 这一小节)
安装CUDA(可选,我没选,选择安装的同学查看 Install CUDA 这一小节)
安装VAAPI(可选,我没选,选择安装的同学查看 Install VAAPI 这一小节)
安装OpenNI2(必选啊,有了这个PCL才能调用Kinect)
1 | sudo apt-get install libopenni2-dev |
编译
1 | mkdir build && cd build |
安装路径CMAKE_INSTALL_PREFIX
自己定义。
当第三方的应用CMake需要libfreenect2路径时,你要用cmake -Dfreenect2_DIR=$HOME/freenect2/lib/cmake/freenect2
来指定。
设定设备访问规则
1 | sudo cp ../platform/linux/udev/90-kinect2.rules /etc/udev/rules.d/ |
然后重新插拔一下Kinect V2设备。
运行测试程序
1 | ./bin/Protonect |
运行OpenNI2测试(重要)
1 | sudo apt-get install openni2-utils |
如果遇到设备找不到,不要着急,试试重新插拔一下Kinect设备。
第二步:PCL的编译
参考链接:ubuntu16.04 安装PCL库
安装依赖项
1 | sudo apt-get update |
下载源码
1 | git clone https://github.com/PointCloudLibrary/pcl.git |
编译及安装
我是使用CCMake进行的自定义编译,因为默认的编译没有把文档doc编译出来(文档和tutorial代码很重要)。
1 | sudo apt-get install cmake-curses-gui # 安装ccmake |
安装之后,doc文件夹在/usr/local/share
,可以拷出来,随用随查。
第三步:测试
源码:
CMake文件:
运行成功,即能够获取到数据流和帧率信息
提示设备找不到的话,记得插拔一下Kinect啊