PCL1.9.1下载与配置+Visual Studio2017
PCL1.9.1下載與配置+Visual Studio2017
1.PCL1.9.1下載
官網(wǎng)下載:
1.百度搜索GitHub,點擊進(jìn)入GitHub主頁
2.在如下界面搜索欄中輸入pcl,按回車鍵
3.點擊下圖所示鏈接:
4.在新的界面中下拉至如下圖所示區(qū)域,并點擊圖中所指鏈接:
5.在新的界面中下拉至下圖所示處:
根據(jù)個人電腦系統(tǒng)版本位數(shù)進(jìn)行選擇(壓縮包和可執(zhí)行文件均可),博主電腦為64位,故以此為例進(jìn)行配置
2.安裝
傻瓜式安裝,雙擊下載的“PCL-1.9.1-AllInOne-msvc2017-win64.exe”進(jìn)行安裝:
點擊下一步:
選擇第二個:Add PCL to the system PATH for all users,點擊下一步
根據(jù)個人喜好選擇安裝路徑(博主選擇路徑如下):
以下庫包默認(rèn)全選點擊安裝即可:
安裝過程中會跳出如下OpenNI安裝界面,選擇路徑./3rdParty/OpenNI2/安裝,(為了之后方便配置環(huán)境):
安裝完畢。
解壓“pcl-1.9.0-pdb-msvc2017-win64.zip”,將解壓得到的文件夾中的內(nèi)容添加到你的PCL安裝目錄…\PCL 1.9.0\bin中。
pcl安裝到此結(jié)束。
PCL1.9.1系統(tǒng)環(huán)境配置
環(huán)境配置:
系統(tǒng)環(huán)境配置
計算機->屬性->高級系統(tǒng)變量->環(huán)境變量,雙擊Path,
添加如下路徑(路徑根據(jù)自己的安裝目錄添加)
添加完畢后,注銷電腦使配置生效。
3.VS中PCL1.9.1開發(fā)環(huán)境配置
1.打開VS2017,新建空項目:
輸入名字,選擇生成文件夾,然后選擇“空項目”,直接確定就可以了。
首先要確保自己的vs編譯環(huán)境是X64,我這里選擇的是Debug版本,Release版本配置只有一步不一樣,其他都是一樣的。(Release版本與Debug版本區(qū)別在于Release斑斑運行起來不顯示中間變量,速度比Debug快)
以下為項目環(huán)境配置(一定要仔細(xì)!):
右鍵點擊項目->屬性->通用屬性->VC++目錄—>包含目錄中添加紅框中的7個目錄(博主的OpenNI庫安裝在PCL1.9.1的目錄中的,讀者注意檢查自己的目錄是否正確):
…PCL 1.9.1\include\pcl-1.9
…PCL 1.9.1\3rdParty\Boost\include\boost-1_68
…PCL 1.9.1\3rdParty\Eigen\eigen3
…PCL 1.9.1\3rdParty\FLANN\include
…PCL 1.9.1\3rdParty\Qhull\include
…PCL 1.9.1\3rdParty\OpenNI2\Include
…PCL 1.9.1\3rdParty\VTK\include\vtk-8.1
然后是添加lib目錄,在通用屬性—>VC++目錄—>庫目錄中添加如下6個目錄:
…PCL1.9.1\PCL 1.9.1\lib
…PCL1.9.1\PCL 1.9.1\3rdParty\Boost\lib
…PCL1.9.1\PCL 1.9.1\3rdParty\FLANN\lib
…PCL 1.9.1\3rdParty\OpenNI2\Lib
…PCL1.9.1\PCL 1.9.1\3rdParty\Qhull\lib
…PCL1.9.1\PCL 1.9.1\3rdParty\VTK\lib
在C/C++—>預(yù)處理器—>預(yù)處理器定義中添加以下內(nèi)容:
_CRT_SECURE_NO_WARNINGS
_SCL_SECURE_NO_WARNINGS
_SILENCE_FPOS_SEEKPOS_DEPRECATION_WARNING
將C/C++—>所有選項—>SDL檢查改為否。
最后:在通用屬性—>鏈接器—>輸入—>附加的依賴項中添加對應(yīng)的.“l(fā)ib”文件,主要是添加PCL的“.lib”文件和第三方庫中VTK的“.lib”文件。文件有很多,列表附在文章末尾。 檢查你的lib文件和我給出的靜態(tài)鏈接庫版本一不一樣,如果不一樣這里給出一個快速獲取所有靜態(tài)鏈接庫文件名的方法,方法也附在文章末尾。
PCL的配置到此結(jié)束,下面來測試一下:
新建一個main.cpp,代碼如下:
#include"stdafx.h"
#include<pcl/visualization/cloud_viewer.h>
#include//標(biāo)準(zhǔn)C++庫中的輸入輸出類相關(guān)頭文件。
#include<pcl/io/io.h>
#include<pcl/io/pcd_io.h>//pcd 讀寫類相關(guān)的頭文件。
#include<pcl/io/ply_io.h>
#include<pcl/point_types.h> //PCL中支持的點類型頭文件。
using namespace std;
using namespace pcl;
void viewerOneOff(visualization::PCLVisualizer& viewer) {
viewer.setBackgroundColor(0, 0, 0); //設(shè)置背景顏色為黑色
}
int main() {
PointCloud::Ptr cloud(new PointCloud);
char strfilepath[256] = “rabbit.pcd”;
if (-1 == io::loadPCDFile(strfilepath, *cloud)) {
cout << “error input!” << endl;
return -1;
}
cout << cloud->points.size() << endl;
visualization::CloudViewer viewer(“Cloud Viewer: Rabbit”); //創(chuàng)建viewer對象
viewer.showCloud(cloud);
viewer.runOnVisualizationThreadOnce(viewerOneOff);
system(“pause”);
return 0;
}
斯坦福兔子rabbit.pcd 點云文件可百度下載
運行結(jié)果如下:
可能遇到的報錯問題
1.無法解析的外部符號:
這里是引用
1>vtkCommonCore-8.0-gd.lib(vtkWin32OutputWindow.obj) : error LNK2001: 無法解析的外部符號 __imp_MessageBoxA
1>vtkCommonCore-8.0-gd.lib(vtkWin32OutputWindow.obj) : error LNK2019: 無法解析的外部符號 __imp_GetStockObject,該符號在函數(shù) “protected: static int __cdecl vtkWin32OutputWindow::Initialize(void)” (?Initialize@vtkWin32OutputWindow@@KAHXZ) 中被引用
…
解決辦法:仔細(xì)檢查上述庫目錄,連接器附加依賴性等內(nèi)容是否全部添加完整!!!(很重要,此問題錯誤幾乎都是添加內(nèi)容不完整導(dǎo)致)
2.遇到“XXX被聲明為已否決”
直接雙擊屬性表的根目錄Debug|X64
然后更改SDL檢查為否:
3.檢測到XXX的不匹配項:值…(如下圖)
解決方法:
1.首先檢查你屬性表中:鏈接器—輸入—附加依耐項中配置的.lib文件是不是你所用的debug/release版本;
2.如果第一步?jīng)]錯,嘗試以下步驟:
直接雙擊屬性表的根目錄Release|X64(根據(jù)你使用的是Debug還是Release)。找到運行庫,更改為其他幾個試一下。
3.第三方庫flann報錯:
添加頭文件#include <pcl/registration/icp.h>編譯的時候可能會遇到如下報錯:
1>…\flann\algorithms\dist.h(523): error C3861: “pop_t”: 找不到標(biāo)識符
1
解決方法:
(注由于要對第三方庫的頭文件進(jìn)行修改,建議先備份一下原頭文件,其路徑…\PCL 1.9.1\3rdParty\FLANN\include\flann\algorithms\dist.h)
開始解決:
雙擊該行輸出直接打開dist.h頭文件;
將第503行的typedef unsigned long long pop_t;移動到第480行前面:
制鏈接庫列表
注意VTK的版本,在你的路徑:…PCL1.9.1\PCL 1.9.1\3rdParty\VTK\lib 中查看自己VTK的版本。
Debug版本:注意VTK的版本
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_ml_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_stereo_debug.lib
pcl_surface_debug.lib
pcl_tracking_debug.lib
pcl_visualization_debug.lib
vtkalglib-8.1-gd.lib
vtkChartsCore-8.1-gd.lib
vtkCommonColor-8.1-gd.lib
vtkCommonComputationalGeometry-8.1-gd.lib
vtkCommonCore-8.1-gd.lib
vtkCommonDataModel-8.1-gd.lib
vtkCommonExecutionModel-8.1-gd.lib
vtkCommonMath-8.1-gd.lib
vtkCommonMisc-8.1-gd.lib
vtkCommonSystem-8.1-gd.lib
vtkCommonTransforms-8.1-gd.lib
vtkDICOMParser-8.1-gd.lib
vtkDomainsChemistry-8.1-gd.lib
vtkexoIIc-8.1-gd.lib
vtkexpat-8.1-gd.lib
vtkFiltersAMR-8.1-gd.lib
vtkFiltersCore-8.1-gd.lib
vtkFiltersExtraction-8.1-gd.lib
vtkFiltersFlowPaths-8.1-gd.lib
vtkFiltersGeneral-8.1-gd.lib
vtkFiltersGeneric-8.1-gd.lib
vtkFiltersGeometry-8.1-gd.lib
vtkFiltersHybrid-8.1-gd.lib
vtkFiltersHyperTree-8.1-gd.lib
vtkFiltersImaging-8.1-gd.lib
vtkFiltersModeling-8.1-gd.lib
vtkFiltersParallel-8.1-gd.lib
vtkFiltersParallelImaging-8.1-gd.lib
vtkFiltersPoints-8.1-gd.lib
vtkFiltersProgrammable-8.1-gd.lib
vtkFiltersSelection-8.1-gd.lib
vtkFiltersSMP-8.1-gd.lib
vtkFiltersSources-8.1-gd.lib
vtkFiltersStatistics-8.1-gd.lib
vtkFiltersTexture-8.1-gd.lib
vtkFiltersTopology-8.1-gd.lib
vtkFiltersVerdict-8.1-gd.lib
vtkfreetype-8.1-gd.lib
vtkGeovisCore-8.1-gd.lib
vtkgl2ps-8.1-gd.lib
vtkhdf5-8.1-gd.lib
vtkhdf5_hl-8.1-gd.lib
vtkImagingColor-8.1-gd.lib
vtkImagingCore-8.1-gd.lib
vtkImagingFourier-8.1-gd.lib
vtkImagingGeneral-8.1-gd.lib
vtkImagingHybrid-8.1-gd.lib
vtkImagingMath-8.1-gd.lib
vtkImagingMorphological-8.1-gd.lib
vtkImagingSources-8.1-gd.lib
vtkImagingStatistics-8.1-gd.lib
vtkImagingStencil-8.1-gd.lib
vtkInfovisCore-8.1-gd.lib
vtkInfovisLayout-8.1-gd.lib
vtkInteractionImage-8.1-gd.lib
vtkInteractionStyle-8.1-gd.lib
vtkInteractionWidgets-8.1-gd.lib
vtkIOAMR-8.1-gd.lib
vtkIOCore-8.1-gd.lib
vtkIOEnSight-8.1-gd.lib
vtkIOExodus-8.1-gd.lib
vtkIOExport-8.1-gd.lib
vtkIOExportOpenGL-8.1-gd.lib
vtkIOGeometry-8.1-gd.lib
vtkIOImage-8.1-gd.lib
vtkIOImport-8.1-gd.lib
vtkIOInfovis-8.1-gd.lib
vtkIOLegacy-8.1-gd.lib
vtkIOLSDyna-8.1-gd.lib
vtkIOMINC-8.1-gd.lib
vtkIOMovie-8.1-gd.lib
vtkIONetCDF-8.1-gd.lib
vtkIOParallel-8.1-gd.lib
vtkIOParallelXML-8.1-gd.lib
vtkIOPLY-8.1-gd.lib
vtkIOSQL-8.1-gd.lib
vtkIOTecplotTable-8.1-gd.lib
vtkIOVideo-8.1-gd.lib
vtkIOXML-8.1-gd.lib
vtkIOXMLParser-8.1-gd.lib
vtkjpeg-8.1-gd.lib
vtkjsoncpp-8.1-gd.lib
vtklibharu-8.1-gd.lib
vtklibxml2-8.1-gd.lib
vtklz4-8.1-gd.lib
vtkmetaio-8.1-gd.lib
vtkNetCDF-8.1-gd.lib
vtknetcdfcpp-8.1-gd.lib
vtkoggtheora-8.1-gd.lib
vtkParallelCore-8.1-gd.lib
vtkpng-8.1-gd.lib
vtkproj4-8.1-gd.lib
vtkRenderingAnnotation-8.1-gd.lib
vtkRenderingContext2D-8.1-gd.lib
vtkRenderingContextOpenGL-8.1-gd.lib
vtkRenderingCore-8.1-gd.lib
vtkRenderingFreeType-8.1-gd.lib
vtkRenderingGL2PS-8.1-gd.lib
vtkRenderingImage-8.1-gd.lib
vtkRenderingLabel-8.1-gd.lib
vtkRenderingLIC-8.1-gd.lib
vtkRenderingLOD-8.1-gd.lib
vtkRenderingOpenGL-8.1-gd.lib
vtkRenderingVolume-8.1-gd.lib
vtkRenderingVolumeOpenGL-8.1-gd.lib
vtksqlite-8.1-gd.lib
vtksys-8.1-gd.lib
vtktiff-8.1-gd.lib
vtkverdict-8.1-gd.lib
vtkViewsContext2D-8.1-gd.lib
vtkViewsCore-8.1-gd.lib
vtkViewsInfovis-8.1-gd.lib
vtkzlib-8.1-gd.lib
Release版本:注意VTK的版本
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_ml_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_stereo_release.lib
pcl_surface_release.lib
pcl_tracking_release.lib
pcl_visualization_release.lib
vtkalglib-8.1.lib
vtkChartsCore-8.1.lib
vtkCommonColor-8.1.lib
vtkCommonComputationalGeometry-8.1.lib
vtkCommonCore-8.1.lib
vtkCommonDataModel-8.1.lib
vtkCommonExecutionModel-8.1.lib
vtkCommonMath-8.1.lib
vtkCommonMisc-8.1.lib
vtkCommonSystem-8.1.lib
vtkCommonTransforms-8.1.lib
vtkDICOMParser-8.1.lib
vtkDomainsChemistry-8.1.lib
vtkexoIIc-8.1.lib
vtkexpat-8.1.lib
vtkFiltersAMR-8.1.lib
vtkFiltersCore-8.1.lib
vtkFiltersExtraction-8.1.lib
vtkFiltersFlowPaths-8.1.lib
vtkFiltersGeneral-8.1.lib
vtkFiltersGeneric-8.1.lib
vtkFiltersGeometry-8.1.lib
vtkFiltersHybrid-8.1.lib
vtkFiltersHyperTree-8.1.lib
vtkFiltersImaging-8.1.lib
vtkFiltersModeling-8.1.lib
vtkFiltersParallel-8.1.lib
vtkFiltersParallelImaging-8.1.lib
vtkFiltersPoints-8.1.lib
vtkFiltersProgrammable-8.1.lib
vtkFiltersSelection-8.1.lib
vtkFiltersSMP-8.1.lib
vtkFiltersSources-8.1.lib
vtkFiltersStatistics-8.1.lib
vtkFiltersTexture-8.1.lib
vtkFiltersTopology-8.1.lib
vtkFiltersVerdict-8.1.lib
vtkfreetype-8.1.lib
vtkGeovisCore-8.1.lib
vtkgl2ps-8.1.lib
vtkhdf5-8.1.lib
vtkhdf5_hl-8.1.lib
vtkImagingColor-8.1.lib
vtkImagingCore-8.1.lib
vtkImagingFourier-8.1.lib
vtkImagingGeneral-8.1.lib
vtkImagingHybrid-8.1.lib
vtkImagingMath-8.1.lib
vtkImagingMorphological-8.1.lib
vtkImagingSources-8.1.lib
vtkImagingStatistics-8.1.lib
vtkImagingStencil-8.1.lib
vtkInfovisCore-8.1.lib
vtkInfovisLayout-8.1.lib
vtkInteractionImage-8.1.lib
vtkInteractionStyle-8.1.lib
vtkInteractionWidgets-8.1.lib
vtkIOAMR-8.1.lib
vtkIOCore-8.1.lib
vtkIOEnSight-8.1.lib
vtkIOExodus-8.1.lib
vtkIOExport-8.1.lib
vtkIOExportOpenGL-8.1.lib
vtkIOGeometry-8.1.lib
vtkIOImage-8.1.lib
vtkIOImport-8.1.lib
vtkIOInfovis-8.1.lib
vtkIOLegacy-8.1.lib
vtkIOLSDyna-8.1.lib
vtkIOMINC-8.1.lib
vtkIOMovie-8.1.lib
vtkIONetCDF-8.1.lib
vtkIOParallel-8.1.lib
vtkIOParallelXML-8.1.lib
vtkIOPLY-8.1.lib
vtkIOSQL-8.1.lib
vtkIOTecplotTable-8.1.lib
vtkIOVideo-8.1.lib
vtkIOXML-8.1.lib
vtkIOXMLParser-8.1.lib
vtkjpeg-8.1.lib
vtkjsoncpp-8.1.lib
vtklibharu-8.1.lib
vtklibxml2-8.1.lib
vtklz4-8.1.lib
vtkmetaio-8.1.lib
vtkNetCDF-8.1.lib
vtknetcdfcpp-8.1.lib
vtkoggtheora-8.1.lib
vtkParallelCore-8.1.lib
vtkpng-8.1.lib
vtkproj4-8.1.lib
vtkRenderingAnnotation-8.1.lib
vtkRenderingContext2D-8.1.lib
vtkRenderingContextOpenGL-8.1.lib
vtkRenderingCore-8.1.lib
vtkRenderingFreeType-8.1.lib
vtkRenderingGL2PS-8.1.lib
vtkRenderingImage-8.1.lib
vtkRenderingLabel-8.1.lib
vtkRenderingLIC-8.1.lib
vtkRenderingLOD-8.1.lib
vtkRenderingOpenGL-8.1.lib
vtkRenderingVolume-8.1.lib
vtkRenderingVolumeOpenGL-8.1.lib
vtksqlite-8.1.lib
vtksys-8.1.lib
vtktiff-8.1.lib
vtkverdict-8.1.lib
vtkViewsContext2D-8.1.lib
vtkViewsCore-8.1.lib
vtkViewsInfovis-8.1.lib
vtkzlib-8.1.lib
如何獲取自己的鏈接庫列表
win+r調(diào)出“運行”窗口并輸出cmd
輸入:cd /d D:\P_pcl\PCL1.9.0\PCL 1.9.0\3rdParty\VTK\lib 回車 (填自己的路徑)
輸入:dir /b *.lib *>lib.txt 回車
這時打開你對應(yīng)路徑的目錄,多了一個lib.txt文件,里面存了你這個文件夾里所有鏈接庫名字。
由于每一個Debug版本和Release版本的鏈接庫是挨在一起的。寫一個讀取文檔并對其分別保存就行了。
具體代碼如下(主要功能是讀取一個txt文件,將其中奇數(shù)行和偶數(shù)行單獨輸出到新的txt文檔。):
#include
#include
#include
#include
using namespace std;
int main()
{
ifstream txtfile;//打開讀取的文件
ofstream txt01;//保存的文件
ofstream txt02;//保存的文件
string temp;
int index = 0;//用于判斷奇偶
}
總結(jié)
以上是生活随笔為你收集整理的PCL1.9.1下载与配置+Visual Studio2017的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 基于视觉的心率检测算法
- 下一篇: 颈椎病的防治与保健