PCL1.9.1下载与配置+Visual Studio2017
PCL1.9.1下載與配置+Visual Studio2017
1.PCL1.9.1下載
官網下載:
1.百度搜索GitHub,點擊進入GitHub主頁
2.在如下界面搜索欄中輸入pcl,按回車鍵
3.點擊下圖所示鏈接:
4.在新的界面中下拉至如下圖所示區域,并點擊圖中所指鏈接:
5.在新的界面中下拉至下圖所示處:
根據個人電腦系統版本位數進行選擇(壓縮包和可執行文件均可),博主電腦為64位,故以此為例進行配置
2.安裝
傻瓜式安裝,雙擊下載的“PCL-1.9.1-AllInOne-msvc2017-win64.exe”進行安裝:
點擊下一步:
選擇第二個:Add PCL to the system PATH for all users,點擊下一步
根據個人喜好選擇安裝路徑(博主選擇路徑如下):
以下庫包默認全選點擊安裝即可:
安裝過程中會跳出如下OpenNI安裝界面,選擇路徑./3rdParty/OpenNI2/安裝,(為了之后方便配置環境):
安裝完畢。
解壓“pcl-1.9.0-pdb-msvc2017-win64.zip”,將解壓得到的文件夾中的內容添加到你的PCL安裝目錄…\PCL 1.9.0\bin中。
pcl安裝到此結束。
PCL1.9.1系統環境配置
環境配置:
系統環境配置
計算機->屬性->高級系統變量->環境變量,雙擊Path,
添加如下路徑(路徑根據自己的安裝目錄添加)
添加完畢后,注銷電腦使配置生效。
3.VS中PCL1.9.1開發環境配置
1.打開VS2017,新建空項目:
輸入名字,選擇生成文件夾,然后選擇“空項目”,直接確定就可以了。
首先要確保自己的vs編譯環境是X64,我這里選擇的是Debug版本,Release版本配置只有一步不一樣,其他都是一樣的。(Release版本與Debug版本區別在于Release斑斑運行起來不顯示中間變量,速度比Debug快)
以下為項目環境配置(一定要仔細!):
右鍵點擊項目->屬性->通用屬性->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++—>預處理器—>預處理器定義中添加以下內容:
_CRT_SECURE_NO_WARNINGS
_SCL_SECURE_NO_WARNINGS
_SILENCE_FPOS_SEEKPOS_DEPRECATION_WARNING
將C/C++—>所有選項—>SDL檢查改為否。
最后:在通用屬性—>鏈接器—>輸入—>附加的依賴項中添加對應的.“lib”文件,主要是添加PCL的“.lib”文件和第三方庫中VTK的“.lib”文件。文件有很多,列表附在文章末尾。 檢查你的lib文件和我給出的靜態鏈接庫版本一不一樣,如果不一樣這里給出一個快速獲取所有靜態鏈接庫文件名的方法,方法也附在文章末尾。
PCL的配置到此結束,下面來測試一下:
新建一個main.cpp,代碼如下:
#include"stdafx.h"
#include<pcl/visualization/cloud_viewer.h>
#include//標準C++庫中的輸入輸出類相關頭文件。
#include<pcl/io/io.h>
#include<pcl/io/pcd_io.h>//pcd 讀寫類相關的頭文件。
#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); //設置背景顏色為黑色
}
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”); //創建viewer對象
viewer.showCloud(cloud);
viewer.runOnVisualizationThreadOnce(viewerOneOff);
system(“pause”);
return 0;
}
斯坦福兔子rabbit.pcd 點云文件可百度下載
運行結果如下:
可能遇到的報錯問題
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,該符號在函數 “protected: static int __cdecl vtkWin32OutputWindow::Initialize(void)” (?Initialize@vtkWin32OutputWindow@@KAHXZ) 中被引用
…
解決辦法:仔細檢查上述庫目錄,連接器附加依賴性等內容是否全部添加完整!!!(很重要,此問題錯誤幾乎都是添加內容不完整導致)
2.遇到“XXX被聲明為已否決”
直接雙擊屬性表的根目錄Debug|X64
然后更改SDL檢查為否:
3.檢測到XXX的不匹配項:值…(如下圖)
解決方法:
1.首先檢查你屬性表中:鏈接器—輸入—附加依耐項中配置的.lib文件是不是你所用的debug/release版本;
2.如果第一步沒錯,嘗試以下步驟:
直接雙擊屬性表的根目錄Release|X64(根據你使用的是Debug還是Release)。找到運行庫,更改為其他幾個試一下。
3.第三方庫flann報錯:
添加頭文件#include <pcl/registration/icp.h>編譯的時候可能會遇到如下報錯:
1>…\flann\algorithms\dist.h(523): error C3861: “pop_t”: 找不到標識符
1
解決方法:
(注由于要對第三方庫的頭文件進行修改,建議先備份一下原頭文件,其路徑…\PCL 1.9.1\3rdParty\FLANN\include\flann\algorithms\dist.h)
開始解決:
雙擊該行輸出直接打開dist.h頭文件;
將第503行的typedef unsigned long long pop_t;移動到第480行前面:

輸入:dir /b *.lib *>lib.txt 回車
這時打開你對應路徑的目錄,多了一個lib.txt文件,里面存了你這個文件夾里所有鏈接庫名字。
由于每一個Debug版本和Release版本的鏈接庫是挨在一起的。寫一個讀取文檔并對其分別保存就行了。
具體代碼如下(主要功能是讀取一個txt文件,將其中奇數行和偶數行單獨輸出到新的txt文檔。):
#include
#include
#include
#include
using namespace std;
int main()
{
ifstream txtfile;//打開讀取的文件
ofstream txt01;//保存的文件
ofstream txt02;//保存的文件
string temp;
int index = 0;//用于判斷奇偶
}
總結
以上是生活随笔為你收集整理的PCL1.9.1下载与配置+Visual Studio2017的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 基于视觉的心率检测算法
- 下一篇: 颈椎病的防治与保健