pcl 1.8 + VS 2010 在win7 x64下的配置
目錄(?)[+]
在安裝PCL時(shí),最方便的辦法是官網(wǎng)提供PCL all in one版本,下載安裝即可,不需要對(duì)pcl源碼編譯及環(huán)境配置,但是目前該版本最新支持到1.6,而PCL源碼庫(kù)的版本一般較高(目前是1.8版本)。all in one版本可能缺少最新的功能。
在此,我使用Cmake進(jìn)行最新的源碼編譯。官網(wǎng)給出了配置方法:http://pointclouds.org/documentation/tutorials/compiling_pcl_windows.php
在pcl的官網(wǎng)上可以下載所有的庫(kù)的源碼。?http://www.pointclouds.org/downloads/windows.html
前四項(xiàng)是必須要下載的(因?yàn)槲倚枰玫近c(diǎn)抓取功能,就安裝的OpenNI。)并下載最新的PCL源碼。?https://github.com/PointCloudLibrary/pcl/releases ? ? 解壓,源碼放在你指定的文件夾中,比如:C:/PCL/pcl
首先安裝前四個(gè)軟件,安裝過(guò)程中注意要選擇配置環(huán)境變量。(安裝位置就按默認(rèn)路徑吧,選擇自己的路徑可能會(huì)麻煩點(diǎn)) 然后使用cmake對(duì)PCL源碼進(jìn)行編譯vs2010的項(xiàng)目。在cmake中指定源碼位置及生成位置:
Where?is?the?source?code???:?C:/PCL/pcl Where?to?build?the?binaries:?C:/PCL
Grouped和Advanced選項(xiàng)要選中
然后點(diǎn)擊配置,編譯器選擇Visual Studio 10 Win64(這里一定要注意,如果你要配置64位的PCL環(huán)境,上面的第三方庫(kù)也下載64位版本。千萬(wàn)不要選錯(cuò)。如果你要配置32位的PCL環(huán)境,第三方庫(kù)下載32位版本,Cmake編譯器選擇Visual
Studio 10?)
配置完以后,要在Cmake中確認(rèn)第三方軟件是否都找到了。
Boost?:
Eigen?:
FLANN?:
VTK?:
OpenNI?:
其他庫(kù)我們沒(méi)有安裝,就不需要指定了。以上路徑如果沒(méi)有找到就手動(dòng)指定就好。
點(diǎn)擊配置,如果沒(méi)錯(cuò)誤的話(huà)就點(diǎn)擊生成。
在生成目錄中打開(kāi)PCL.sln工程。生成ALL_BUILD
如果上面的步驟你設(shè)置的都正確的話(huà)(尤其是32位64位設(shè)置),編譯過(guò)程會(huì)有幾個(gè)小錯(cuò)誤:
編譯到visualization模塊時(shí),如下語(yǔ)句會(huì)報(bào)錯(cuò)。參考:http://blog.csdn.net/Linear_Luo/article/details/52658984
if (!pcl::visualization::getColormapLUT (static_cast
?
'static_cast': cannot convert
from 'double' to 'pcl::visualization::LookUpTableRepresentationPropert
解決方案:?
將所有的
static_cast(value)
11
修改成
static_cast(int(value))
這樣應(yīng)該就沒(méi)問(wèn)題了。編譯會(huì)完全成功(dubug和release下都進(jìn)行編譯)
然后生成INSTALL。(dubug和release下都進(jìn)行編譯)
生成成功后,在C:Program Files下會(huì)生成PCL文件夾,這就是配置好的PCL庫(kù)了。之后就可以像OpenCV一樣配置環(huán)境變量調(diào)用編程了
參考:blog.sina.com.cn/s/blog_b3a4f3f80101k38a.html
1、打開(kāi)計(jì)算機(jī)?à?系統(tǒng)屬性?à?高級(jí)系統(tǒng)設(shè)置?à?環(huán)境變量,在系統(tǒng)變量中添加C:Program FilesOpenNIBin64;C:Program FilesBoostlib;C:Program Filesflannbin;C:Program Files (x86)Eigenbin;C:Program FilesPCLbin
2、打開(kāi)VS2010 ,創(chuàng)建一個(gè)新的工程,點(diǎn)擊左側(cè)窗口下方的屬性管理器,雙擊Microsoft.Cpp.win32.user,彈出屬性頁(yè)。
點(diǎn)擊VC++目錄(VC++ Directories)
在包含目錄(Include Directories)里添加:
? ? ? ? ? ?C:Program Files (x86)Eigeninclude
C:Program Filesflanninclude
C:Program FilesVTK 5.8.0includevtk-5.8
C:Program FilesBoostinclude
C:Program FilesPCLincludepcl-1.8
在庫(kù)目錄里(Library Directories)添加:
C:Program Filesflannlib
C:Program FilesVTK 5.8.0libvtk-5.8
C:Program FilesBoostlib
C:Program FilesPCLlib
點(diǎn)擊C/C++——>常規(guī)(General),點(diǎn)開(kāi)附加包含目錄(Additional Include Directories),添加
? ? ? ?C:Program Files (x86)Eigeninclude
C:Program Filesflanninclude
C:Program FilesVTK 5.8.0includevtk-5.8
C:Program FilesBoostinclude
C:Program FilesPCLincludepcl-1.8
點(diǎn)開(kāi)鏈接器->常規(guī),在附加庫(kù)目錄中添加
? ? ? ?C:Program Filesflannlib
C:Program FilesVTK 5.8.0libvtk-5.8
C:Program FilesBoostlib
C:Program FilesPCLlib
鏈接器->輸入->附加依賴(lài)項(xiàng)里邊添加:
opengl32.lib
boost_chrono-vc100-mt-gd-1_50.lib
boost_date_time-vc100-mt-gd-1_50.lib
boost_filesystem-vc100-mt-gd-1_50.lib
boost_graph-vc100-mt-gd-1_50.lib
boost_graph_parallel-vc100-mt-gd-1_50.lib
boost_iostreams-vc100-mt-gd-1_50.lib
boost_locale-vc100-mt-gd-1_50.lib
boost_math_c99-vc100-mt-gd-1_50.lib
boost_math_c99f-vc100-mt-gd-1_50.lib
boost_math_tr1-vc100-mt-gd-1_50.lib
boost_math_tr1f-vc100-mt-gd-1_50.lib
boost_mpi-vc100-mt-gd-1_50.lib
boost_prg_exec_monitor-vc100-mt-gd-1_50.lib
boost_program_options-vc100-mt-gd-1_50.lib
boost_random-vc100-mt-gd-1_50.lib
boost_regex-vc100-mt-gd-1_50.lib
boost_serialization-vc100-mt-gd-1_50.lib
boost_signals-vc100-mt-gd-1_50.lib
boost_system-vc100-mt-gd-1_50.lib
boost_thread-vc100-mt-gd-1_50.lib
boost_timer-vc100-mt-gd-1_50.lib
boost_unit_test_framework-vc100-mt-gd-1_50.lib
boost_wave-vc100-mt-gd-1_50.lib
boost_wserialization-vc100-mt-gd-1_50.lib
libboost_chrono-vc100-mt-gd-1_50.lib
libboost_date_time-vc100-mt-gd-1_50.lib
libboost_filesystem-vc100-mt-gd-1_50.lib
libboost_graph_parallel-vc100-mt-gd-1_50.lib
libboost_iostreams-vc100-mt-gd-1_50.lib
libboost_locale-vc100-mt-gd-1_50.lib
libboost_math_c99-vc100-mt-gd-1_50.lib
libboost_math_c99f-vc100-mt-gd-1_50.lib
libboost_math_tr1-vc100-mt-gd-1_50.lib
libboost_math_tr1f-vc100-mt-gd-1_50.lib
libboost_mpi-vc100-mt-gd-1_50.lib
libboost_prg_exec_monitor-vc100-mt-gd-1_50.lib
libboost_program_options-vc100-mt-gd-1_50.lib
libboost_random-vc100-mt-gd-1_50.lib
libboost_regex-vc100-mt-gd-1_50.lib
libboost_serialization-vc100-mt-gd-1_50.lib
libboost_signals-vc100-mt-gd-1_50.lib
libboost_system-vc100-mt-gd-1_50.lib
libboost_test_exec_monitor-vc100-mt-gd-1_50.lib
libboost_thread-vc100-mt-gd-1_50.lib
libboost_timer-vc100-mt-gd-1_50.lib
libboost_unit_test_framework-vc100-mt-gd-1_50.lib
libboost_wave-vc100-mt-gd-1_50.lib
libboost_wserialization-vc100-mt-gd-1_50.lib
flann-gd.lib
flann_cpp_s-gd.lib
flann_cuda_s-gd.lib
flann_s-gd.lib
pcl_common_debug.lib
pcl_features_debug.lib
pcl_filters_debug.lib
pcl_io_debug.lib
pcl_io_ply_debug.lib
pcl_kdtree_debug.lib
pcl_keypoints_debug.lib
pcl_octree_debug.lib
pcl_outofcore_debug.lib
pcl_people_debug.lib
pcl_recognition_debug.lib
pcl_registration_debug.lib
pcl_sample_consensus_debug.lib
pcl_search_debug.lib
pcl_segmentation_debug.lib
pcl_surface_debug.lib
pcl_tracking_debug.lib
pcl_visualization_debug.lib
MapReduceMPI-gd.lib
mpistubs-gd.lib
vtkalglib-gd.lib
vtkCharts-gd.lib
vtkCommon-gd.lib
vtkDICOMParser-gd.lib
vtkexoIIc-gd.lib
vtkexpat-gd.lib
vtkFiltering-gd.lib
vtkfreetype-gd.lib
vtkftgl-gd.lib
vtkGenericFiltering-gd.lib
vtkGeovis-gd.lib
vtkGraphics-gd.lib
vtkhdf5-gd.lib
vtkHybrid-gd.lib
vtkImaging-gd.lib
vtkInfovis-gd.lib
vtkIO-gd.lib
vtkjpeg-gd.lib
vtklibxml2-gd.lib
vtkmetaio-gd.lib
vtkNetCDF-gd.lib
vtkNetCDF_cxx-gd.lib
vtkpng-gd.lib
vtkproj4-gd.lib
vtkRendering-gd.lib
vtksqlite-gd.lib
vtksys-gd.lib
vtktiff-gd.lib
vtkverdict-gd.lib
vtkViews-gd.lib
vtkVolumeRendering-gd.lib
vtkWidgets-gd.lib
vtkzlib-gd.lib
以上是debug下的配置,release下的配置一樣,鏈接庫(kù)需要換一下
opengl32.lib
boost_chrono-vc100-mt-1_50.lib
boost_date_time-vc100-mt-1_50.lib
boost_filesystem-vc100-mt-1_50.lib
boost_graph-vc100-mt-1_50.lib
boost_graph_parallel-vc100-mt-1_50.lib
boost_iostreams-vc100-mt-1_50.lib
boost_locale-vc100-mt-1_50.lib
boost_math_c99-vc100-mt-1_50.lib
boost_math_c99f-vc100-mt-1_50.lib
boost_math_tr1-vc100-mt-1_50.lib
boost_math_tr1f-vc100-mt-1_50.lib
boost_mpi-vc100-mt-1_50.lib
boost_prg_exec_monitor-vc100-mt-1_50.lib
boost_program_options-vc100-mt-1_50.lib
boost_random-vc100-mt-1_50.lib
boost_regex-vc100-mt-1_50.lib
boost_serialization-vc100-mt-1_50.lib
boost_signals-vc100-mt-1_50.lib
boost_system-vc100-mt-1_50.lib
boost_thread-vc100-mt-1_50.lib
boost_timer-vc100-mt-1_50.lib
boost_unit_test_framework-vc100-mt-1_50.lib
boost_wave-vc100-mt-1_50.lib
boost_wserialization-vc100-mt-1_50.lib
libboost_chrono-vc100-mt-1_50.lib
libboost_date_time-vc100-mt-1_50.lib
libboost_filesystem-vc100-mt-1_50.lib
libboost_graph_parallel-vc100-mt-1_50.lib
libboost_iostreams-vc100-mt-1_50.lib
libboost_locale-vc100-mt-1_50.lib
libboost_math_c99-vc100-mt-1_50.lib
libboost_math_c99f-vc100-mt-1_50.lib
libboost_math_tr1-vc100-mt-1_50.lib
libboost_math_tr1f-vc100-mt-1_50.lib
libboost_mpi-vc100-mt-1_50.lib
libboost_prg_exec_monitor-vc100-mt-1_50.lib
libboost_program_options-vc100-mt-1_50.lib
libboost_random-vc100-mt-1_50.lib
libboost_regex-vc100-mt-1_50.lib
libboost_serialization-vc100-mt-1_50.lib
libboost_signals-vc100-mt-1_50.lib
libboost_system-vc100-mt-1_50.lib
libboost_test_exec_monitor-vc100-mt-1_50.lib
libboost_thread-vc100-mt-1_50.lib
libboost_timer-vc100-mt-1_50.lib
libboost_unit_test_framework-vc100-mt-1_50.lib
libboost_wave-vc100-mt-1_50.lib
libboost_wserialization-vc100-mt-1_50.lib
flann.lib
flann_cpp_s.lib
flann_cuda_s.lib
flann_s.lib
pcl_common_release.lib
pcl_features_release.lib
pcl_filters_release.lib
pcl_io_ply_release.lib
pcl_io_release.lib
pcl_kdtree_release.lib
pcl_keypoints_release.lib
pcl_octree_release.lib
pcl_outofcore_release.lib
pcl_people_release.lib
pcl_recognition_release.lib
pcl_registration_release.lib
pcl_sample_consensus_release.lib
pcl_search_release.lib
pcl_segmentation_release.lib
pcl_surface_release.lib
pcl_tracking_release.lib
pcl_visualization_release.lib
MapReduceMPI.lib
mpistubs.lib
vtkalglib.lib
vtkCharts.lib
vtkCommon.lib
vtkDICOMParser.lib
vtkexoIIc.lib
vtkexpat.lib
vtkFiltering.lib
vtkfreetype.lib
vtkftgl.lib
vtkGenericFiltering.lib
vtkGeovis.lib
vtkGraphics.lib
vtkhdf5.lib
vtkHybrid.lib
vtkImaging.lib
vtkInfovis.lib
vtkIO.lib
vtkjpeg.lib
vtklibxml2.lib
vtkmetaio.lib
vtkNetCDF.lib
vtkNetCDF_cxx.lib
vtkpng.lib
vtkproj4.lib
vtkRendering.lib
vtksqlite.lib
vtksys.lib
vtktiff.lib
vtkverdict.lib
vtkViews.lib
vtkVolumeRendering.lib
vtkWidgets.lib
vtkzlib.lib
好了,至此就配置完成了。(重新啟動(dòng)計(jì)算機(jī),完成配置)我們可以編寫(xiě)測(cè)試程序了:
[cpp]?view plain?copy #include?