愛悠閑 > VS2012編譯PCL1.70的過程

VS2012編譯PCL1.70的過程

分類: RGD—D累積  |  作者: wishchin 相關  |  發布日期 : 2014-08-24  |  熱度 : 1064°

原文鏈接:http://www.dgvxxj.live/article/p-234347.html


http://www.dgvxxj.live/article/p-234347.html

  

關于個人的幾個注意事項:

       對于boost,可以使用vc100的庫,來編譯VC110的代碼;

       對于確實的包含,一個一個添加,要耐心等待!!!

http://www.dgvxxj.live/article/p-234347.html

PCL簡介

PCL是Point Cloud Library的縮寫,是一個用于處理二維圖像,三維深度圖像和三維點云的C++庫。該庫是完全開源的,可免費用于商業和學術研究。
官方網站:http://pointclouds.org/

PCL的用途:



下面對最新版的PCL庫進行 編譯。

環境:windows7 32bit

VS2010

cmake2.8

TortoiseSVN 1.8


鏈接地址1.安裝第三方依賴庫

官網上已經給出了一些安裝包。下載地址:鏈接地址

記住下好對應系統的安裝包。

Eigen無法正常下載,需要去官網下載:鏈接地址

我下載的實3.1.3的版本,下載zip包,直接解壓到C:\Program Files\,把文件夾名字改成eigen。

其他的三方庫直接雙擊安裝就可以了。


鏈接地址2.用cmake構建項目

創建

C:\Program Files\PCL

C:\Program Files\PCL\trunk

然后用TortoiseSVN把pcl的源碼down下來,svn地址是: 鏈接地址 



打開cmake,開始構建。

將trunk文件夾下的CMakeLists.txt托到cmake里,先Configure,選擇Visual Studio 10,然后Generate。

正常的話應該是這樣:



有問題的話根據報錯信息進行修改,大部分是第三方依賴庫沒有裝好。


 雙擊PCL.sln導入工程到VS2010,編譯,發現全是error - -

boost庫很多東西都沒找到.

在網上搜了很久,發現問題是CMakeLists沒寫好.1.50版本的Boost庫沒辦法識別.

最快的解決方法:卸載BOOST1.50,去鏈接地址 下載Boost-1.49.0-vs2010-x86.exe安裝后重復上面的步驟,生成的項目就正確了。

Build一下ALL_BUILD, 然后去打個盹,回來發現報錯:

Error 18326 error C2664: 'std::_Tree_const_iterator<_Mytree>::_Tree_const_iterator(const std::_Tree_const_iterator<_Mytree> &)' : cannot convert parameter 1 from 'std::_Tree_const_iterator<_Mytree>' to 'const std::_Tree_const_iterator<_Mytree> &' D:\VS2010\VC\include\utility 163

坑爹 的~

繼續搜索解決方法....

修改一個位置: trunk/recognition/src/ransac_based/obj_rec_ransac.cpp

540: pair<set<ordered_int_pair>::iterator, bool> res = ordered_hypotheses_ids.insert (id_pair);

->540: pair<set<ordered_int_pair, bool(*)(const ordered_int_pair&, const ordered_int_pair&)>::iterator, bool> res = ordered_hypotheses_ids.insert (id_pair);

再次重新cmake->導入工程->build ALL_Build




 注意debug和realse版本都要編譯一遍,而且要全部編譯通過.


然后再把INSALL編譯一下,debug和realse版本都要編譯一遍.



完全編譯完成之后,C:\Program Files\PCL\lib中就有生成了編譯好的lib庫了 .




當然還可以自己去編譯 一下它給的一些test,不過需要自己編譯GTest庫.


這樣,PCL就 算編譯好了.



如何在Windows環境中搭建PCL—Point Cloud Library開發環境


原文鏈接:鏈接地址

如何快速構建PCL應用程序

使用CMake

  1. 編寫PCL代碼 包含PCL的頭文件,使用PCL的函數和數據結構構建簡易的界面實現可示化。
  2. 運行CMake_GUI

直接使用Configure Generate工具,你可以在界面上找到相應的按鈕。

  1. 行Visual Studio 調試程序

在使用CMake 編譯完成之后就生成了一個 Visual Studio 2010 解決方案當中有三個項目,其中兩個是輔助工程。

  1. 注意事項

使用Visual Studio

  1. 路徑構建
  2. 庫文件查找
  3. 調試運行
  4. 改正錯誤

庫文件與動態庫的配置

  1. 活頁夾
  2. Windows尋址方式

代碼剖析

PCL_Write

頭文件包含:iostreampcd_io.hpoint_type.h
數據類型: pcl父類,PointCloud模板類,PointXYZRGB點數據類。。。。細節處理:

  1. 初始化點云結構

pcl::PointCloud cloud;
按照對應的數據要求填充cloud數據,像widthheightis_dense(是否稠密),通過resize函數應用相應的參數對數據進行更新。
cloud
是一個PointCloud數據模板,可以通過更新其xyzrgb屬性來更新殿云數據

  1. 數據文件輸出

最后用戶通過pclio接口中的savePCDFileASCII將數據以ASCII碼的形式存儲在pcd文件中

cloud_Viewer

這是一個查看有PCL_writer保存的pcd數據的Console程序從頭文件中我們就可以看到許多都包含了可視化的元素,如visualization/cloud_viwer.h,pcl/io/io.h,pcl/io/pcd_io.h

    pcl::visualization::PCLVisualizer

     pcl::PointCloud::Ptr

    pcl::io::loadPCDFile(string name, PointXYZRGB *cloud)

    pcl::visualization::CloudViewer

     showCloud(PointXYZRGB *cloud)方法

   runOnVisualizationThread( void function() )



快乐彩中奖说明