PCL在VS2013下快速安装或者cmake详细安装(可以运行kinectFusion使用kinect1拍摄深度图彩色图三维模型)两种安装方式

PCL两种安装方式,选对教程很重要。

PCL1.8两种安装方式:

①需要用PCL来使用kinectFusion,那么先需要自己配置第三方库,再用Cmake编译pcl1.8源码(1.8源码在github去下载),

(1)假如你想自己一步步编译第三方库,可以参考http://blog.csdn.net/yzheately/article/details/50938322,安装比较费时,但是会比较有收获。也可以看这个http://blog.csdn.net/alan_1550587588/article/details/54582192。

(2)不用(1)的方法,安装第三方库省事一点:第三方库直接用pcl官网http://www.pointclouds.org/downloads/windows.html推荐的配置,

例如windows10-x64,vs2010就下载最右边列的。

安装第三方库注意点:①必须先安装vs2010,再装其他的②cuda安装要对应自己显卡的计算能力,去官网下载安装③安装官网中的其他第三方库时,openni很容易出错,要点如下:

想用openi获取Kinect的数据则首先不能安装Kinect官方的SDK,否则SDK会屏蔽openni的驱动,之前安装的话就卸掉。另win8、win10的同学需要先设置一下电脑(win7不需要),否则在安装SensorKinect093-Bin-Win32-v5.1.2.1.msi驱动时系统会提示“文件的哈希值不在指定的目录文件中。此文件可能已损坏”的警告导致驱动安装失败。Win10的设置方法为点击左下角->设置->更新和安全->恢复->立刻重启(等一小会)->疑难解答->高级选项(之后重启)->启动设置->禁用驱动程序强制签名(倒数第三个,对应哪个数字就在键盘按几)->重启之后就可以了。查看openni是否成功,可以参考http://blog.csdn.net/alan_1550587588/article/details/54582192,里面的opencv代码查看深度彩色图,,可以的话就是配置openni成功了

  1. #include "stdafx.h"  
  2. #include <stdlib.h>    
  3. #include <iostream>    
  4. #include <string>     
  5. #include <XnCppWrapper.h>    
  6. #include "opencv/cv.h"    
  7. #include "opencv/highgui.h"    
  8.     
  9. using namespace std;    
  10. using namespace cv;    
  11.     
  12. void CheckOpenNIError( XnStatus result, string status )    
  13. {     
  14.     if( result != XN_STATUS_OK )     
  15.         cerr << status << " Error: " << xnGetStatusString( result ) << endl;    
  16. }    
  17.     
  18. int main( int argc, char** argv )    
  19. {    
  20.     XnStatus result = XN_STATUS_OK;      
  21.     xn::DepthMetaData depthMD;    
  22.     xn::ImageMetaData imageMD;    
  23.     
  24.     //OpenCV    
  25.     IplImage*  imgDepth16u=cvCreateImage(cvSize(640,480),IPL_DEPTH_16U,1);    
  26.     IplImage* imgRGB8u=cvCreateImage(cvSize(640,480),IPL_DEPTH_8U,3);    
  27.     IplImage*  depthShow=cvCreateImage(cvSize(640,480),IPL_DEPTH_8U,1);    
  28.     IplImage* imageShow=cvCreateImage(cvSize(640,480),IPL_DEPTH_8U,3);    
  29.     cvNamedWindow("depth",1);    
  30.     cvNamedWindow("image",1);    
  31.     char key=0;    
  32.     xn::Context context;     
  33.     result = context.Init();     
  34.     CheckOpenNIError( result, "initialize context" );      
  35.     
  36.     xn::DepthGenerator depthGenerator;      
  37.     result = depthGenerator.Create( context );     
  38.     CheckOpenNIError( result, "Create depth generator" );      
  39.     xn::ImageGenerator imageGenerator;    
  40.     result = imageGenerator.Create( context );     
  41.     CheckOpenNIError( result, "Create image generator" );    
  42.     
  43.     XnMapOutputMode mapMode;     
  44.     mapMode.nXRes = 640;      
  45.     mapMode.nYRes = 480;     
  46.     mapMode.nFPS = 30;     
  47.     result = depthGenerator.SetMapOutputMode( mapMode );      
  48.     result = imageGenerator.SetMapOutputMode( mapMode );      
  49.     
  50.     depthGenerator.GetAlternativeViewPointCap().SetViewPoint( imageGenerator );     
  51.     
  52.     result = context.StartGeneratingAll();      
  53.     result = context.WaitNoneUpdateAll();      
  54.     
  55.     while( (key!=27) && !(result = context.WaitNoneUpdateAll( ))  )     
  56.     {      
  57.         //get meta data    
  58.         depthGenerator.GetMetaData(depthMD);     
  59.         imageGenerator.GetMetaData(imageMD);    
  60.     
  61.         memcpy(imgDepth16u->imageData,depthMD.Data(),640*480*2);    
  62.         cvConvertScale(imgDepth16u,depthShow,255/4096.0,0);    
  63.         memcpy(imgRGB8u->imageData,imageMD.Data(),640*480*3);    
  64.         cvCvtColor(imgRGB8u,imageShow,CV_RGB2BGR);    
  65.         cvShowImage("depth", depthShow);    
  66.         cvShowImage("image",imageShow);    
  67.         key=cvWaitKey(20);    
  68.     }    
  69.     cvDestroyWindow("depth");    
  70.     cvDestroyWindow("image");    
  71.     cvReleaseImage(&imgDepth16u);    
  72.     cvReleaseImage(&imgRGB8u);    
  73.     cvReleaseImage(&depthShow);    
  74.     cvReleaseImage(&imageShow);    
  75.     context.StopGeneratingAll();    
  76.     context.Shutdown();    
  77.     return 0;    

分别安装好第三方库,然后参照http://blog.csdn.net/yzheately/article/details/50938322里面cmake PCL1.8的步骤再进行cmake编译pcl1.8源码,然后build kinfu-largeScale等运行kinfu拍摄


②不需要使用kinect1,只需要用PCL来处理一些点云的算法(不需要使用kinect设备来获取点云),可以用all-in-one快速安装PCL:

http://www.zhangzscn.com/2016/03/02/pcl1-8-0%EF%BC%8Cvs2013%E9%85%8D%E7%BD%AE%E6%95%99%E7%A8%8B%E3%80%82/ 安装简单快速!

安装好PCL后,动手实践练习很重要,小练习可以看我博客其他PCL方面内容,或者英语官网去看教程。

参考1:http://blog.csdn.net/yzheately/article/details/50938322
参考2:http://www.zhangzscn.com/2016/03/02/pcl1-8-0,vs2013配置教程。/
参考3:http://blog.csdn.net/alan_1550587588/article/details/54582192

你可能感兴趣的:(kinect,软件安装,PCL)