VS2017 配置點雲庫PCL 1.9.1 編譯和運行Demo

2020-12-16 IT點滴

最近由於工作需要處理相關點雲數據,用於處理三維分析重建。三維點雲數據處理技術包括以下幾個方面:點雲濾波(數據預處理)、點雲關鍵點、特徵和特徵描述、點雲配準、 點雲分割與分類、SLAM圖優化、目標識別檢索、變化檢測、 三維重建、點雲數據管理等,相關的算法非常複雜。前期了解到網上有開源的點雲處理庫Point Cloud Library (PCL),可以用於2D/3D圖像和點雲處理,PCL基於BSD開源協議,可以免費用於商業和研究用途。

Point Cloud

Point Cloud Library (PCL)庫基於C++語言開發,前期同事下載了點雲庫,但是編譯一直沒通過,本著簡單的原則看看有沒有其他語言版本的,搜索github發現確實有其他語言的移植版本,如pclpy、pcl.py、pcl-java、PclSharp(c#) 測試過後發現均不太理想(移植不太完整/示例缺乏/運行報錯)

所以還是老老實實使用PCL吧,首先我們從github點雲庫PointCloudLibrary/pcl/releases 根據自己作業系統版本下載最新的PCL安裝文件:PCL-1.9.1-AllInOne-msvc2017-win64.exe、pcl-1.9.1-pdb-msvc2017-win64.zip。首先安裝AllInOne-msvc2017,安裝過程很簡單直接下一步即可,安裝過程中會彈出另外OpenNI的安裝界面,建議安裝在\3rdParty\OpenNI2目錄下,當然安裝在其他目錄也是可以的。安裝完畢後會自動創建環境變量,如果提示環境變量創建失敗,則需要自己添加環境變量(總共8個),添加的環境變量如下圖所示:

\PCL 1.9.1\3rdParty\OpenNI2\Lib

\PCL 1.9.1\3rdParty\OpenNI2\Redist

\PCL 1.9.1\3rdParty\OpenNI2\Tools

\PCL 1.9.1\bin\PCL 1.9.1\3rdParty\Boost\lib

\PCL 1.9.1\3rdParty\FLANN\bin

\PCL 1.9.1\3rdParty\Qhull\bin

\PCL 1.9.1\3rdParty\VTK\bin

更新path環境變量

安裝完畢,環境變量確認無誤後,解壓pcl-1.9.1-pdb-msvc2017-win64.zip,將解壓得到的pdb文件複製到PCL安裝目錄\PCL 1.9.0\bin

打開VS2017/19新建C++空項目,我們在配置管理器裡面新建配置,取名PCL1.9.1X64,平臺選擇X64 ,然後打開屬性管理器選擇我們剛才新建的PCL1.9.1X64,點擊小扳手圖標,對編譯選項進行一些配置。

屬性管理器

通用屬性->VC++目錄->包含目錄增加以下項:D:\Program Files\PCL 1.9.1\include\pcl-1.9

D:\Program Files\PCL 1.9.1\3rdParty\Boost\include\boost-1_68

D:\Program Files\PCL 1.9.1\3rdParty\Eigen\eigen3

D:\Program Files\PCL 1.9.1\3rdParty\FLANN\include

D:\Program Files\PCL 1.9.1\3rdParty\Qhull\include

D:\Program Files\PCL 1.9.1\3rdParty\OpenNI2\Include

D:\Program Files\PCL 1.9.1\3rdParty\VTK\include\vtk-8.1

通用屬性->VC++目錄->庫目錄,增加以下項:D:\Program Files\PCL 1.9.1\lib

D:\Program Files\PCL 1.9.1\3rdParty\Boost\lib

D:\Program Files\PCL 1.9.1\3rdParty\FLANN\lib

D:\Program Files\PCL 1.9.1\3rdParty\OpenNI2\Lib

D:\Program Files\PCL 1.9.1\3rdParty\Qhull\lib

D:\Program Files\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檢查改為否

通用屬性->連結器->輸入->附加的依賴項,主要是以下2個目錄下的lib文件:

PCL1.9.0\PCL 1.9.0\3rdParty\VTK\lib

PCL 1.9.1\lib(只添加_release.lib結尾的lib)

然後百度搜索一個實例,發現正常編譯運行,運行這個三角化示例如果編譯提示:編譯遇到pop_t找不到標誌符的話,我們修改dist.h文件將typedef unsigned long long pop_t語句放置到#if __GNUC__之前即可。

運行示例

相關焦點

  • pcl學習筆記1
    PCL(The Point Cloud Library)是用於2D / 3D圖像和點雲處理的大規模開放項目。開源軟體。它是免費的,可用於商業和研究用途。PCL是跨平臺的,並且已成功編譯並部署在Linux,MacOS,Windows和Android上。點雲是用於表示多維點集合的數據結構,通常用於表示三維數據。在3D點雲中,這些點通常代表基礎採樣表面的X,Y和Z幾何坐標。
  • 嵌入式ARM-Linux平臺上的編譯、配置和運行使用
    本文介紹了嵌入式ARM-Linux上的常用應用程式wpa_supplicant(以及wpa_supplicant依賴的libnl和openssl)的編譯、配置和運行使用,iw、hostapd等應用的編譯和使用
  • vs2017下使用Cmake生成源碼編譯錯誤以及解決方法
    錯誤碼提示內容編寫了一個比較大的項目工程,需要使用cmake,但是安裝的v2017進行編譯的時候,卻報了一堆的錯誤:The CXX compiler identification解決方法你在安裝vs2017的時候,一些固定需要的開發環境沒有安裝齊全造成的這個問題,你可以按照編譯錯誤提示打開log文件查看相關的錯誤信息,可以清晰看到你的編譯錯誤停留在什麼程度出錯的。解決方法就是:打開vs installler,點擊修改,安裝相關的開發環境包即可。
  • Android徹底組件化(二)-Demo發布
    代碼地址:https://github.com/mqzhangw/AndroidComponent雖說開源的是一個整體的方案,代碼量其實很少,簡單起見demo中做了一些簡化,請大家在實際應用中注意一下幾點:(1)目前組件化的編譯腳本是通過一個gradle plugin提供的,現在這個插件發布在本地的repo文件夾中,真正使用的使用請發布到自己公司的maven庫(2)組件開發完成後發布
  • Virtualbox運行 自編譯的Linux
    Virtualbox運行 自編譯的Linux 最近要好好學習一下Linux驅動,所以想找個運行環境,自己編譯內核,然後在其上做實驗,所以就想在VirtualBox上進行。
  • LTUI v1.7 發布,一個基於 Lua 的跨平臺字符終端 UI 界面庫
    此框架源於xmake中圖形化菜單配置的需求,類似linux kernel的menuconf去配置編譯參數,因此基於curses和lua實現了一整套跨平臺的字符終端ui庫。 而樣式風格基本上完全參照的kconfig-frontends,當然用戶也可以自己定製不同的ui風格。
  • Python3.7源碼在windows(VS2015)下的編譯和安裝
    Python3.7源碼在windows(VS2015)下的編譯和安裝下載官方源碼,使用vs2015(WIN10SDK),最python3.7.0的源碼進行編譯,編譯出不同的版本(release,debug),並配置python的運行環境(環境變量的配置)。
  • burpsuite插件編譯學習指南
    Tips:為什麼要使用eclipse1、用戶習慣使然2、eclipse很多東西可以自定義,C盤空間不會被強姦3、免費,不用去破解在eclipse中配置多版本jdk環境,如圖所示:按照以上步驟將jdk1.7和jdk1.8配置都加入eclipse,當我們使用時就可以在jdk1.7和jdk1.8之間來回切換了。
  • app 安全和馬甲包代碼混淆的demo的手把手教你的詳細教程
    如果我們把自己的程序打包為ipa 使用class-dump ,dump出程序的所有頭文件可以看到所有的頭文件,打開頭文件就可以看到所有的變量和函數了:代碼沒混淆反編譯結果,.h文件中函數如下圖所示代碼混淆反編譯結果,.h文件中函數如下圖所示也許你會問,對微信和支付寶看看他們的頭文件可不可以呢
  • Notepad++編譯和運行C語言(GCC)
    我們在學習C語言的時候,實際上只需要編譯器和編輯器就能開搞了。(初學者過早接觸IDE不利於理解程序構建的過程)在看這篇文章的時候,假設你已經知道如何把GCC配置到環境變量,並且會在命令行/終端下使用gcc 編譯C代碼文件 並運行了。
  • Gear-Lib 1.1.13 發布,適合 IOT 開發的 C 庫
    新版本 1.1.13 更新日誌如下: 新增libuac,支持pulseaudio架構的音頻採集功能
  • 如何使用cmake進行深度學習框架的編譯
    我這裡使用的就是visual studio2019的編譯器,16是指對應的vc編譯器的版本是16,其他的編譯器例如10對應vs2010,14對應vs2015,15對應vs2017。圖三 cmake結果配置完成,項目生成成功。
  • Swagger-Bootstrap-Ui 1.8.9 發布,Swagger增強UI 實現
    Swagger-Bootstrap-Ui 1.8.9 發布了。
  • linux配置、編譯內核實用工具
    1.根目錄Makefile  它是最重要的Makefile,定義所有與體系結構無關的變量和目標。它讀取.config文件,並根據其信息最終生成vmlinux和modules。Make通過向下遞歸調用子目錄中的Makefile來編譯這兩個目標。
  • 微軟常用運行庫合集2020年09版——墨澀網
    微軟運行庫提供了大量的封裝函數功能,讓開發者不再需要自己編寫一部分函數,極大的方便了開發者程序開發,但是運行庫在程序編譯的適合併不會提取相關代碼編譯進程序
  • 雲伺服器如何安裝mysql
    \ #安裝myisam存儲引擎-DWITH_INNOBASE_STORAGE_ENGINE=1 \ #安裝innodb存儲引擎-DWITH_MEMORY_STORAGE_ENGINE=1 \ #安裝memory存儲引擎-DWITH_READLINE=1 \ #支持readline庫-DENABLED_LOCAL_INFILE=1 \ #啟用加載本地數據-DMYSQL_USER=mysql \ #指定
  • 面向Python的OpenCV輕鬆入門——第一章(1)
    Opencv庫由C和C+語言編寫,涵蓋計算機視覺各個領域內的500多個函數,可以在多種作業系統上運行。它旨在提供一個簡潔而又高效的接口,從而幫助開發人員快速地構建視覺應用。 Opencv更像一個黑盒,讓我們專注於視覺應用的開發,而不必過多關注基礎圖像處理的具體細節。
  • Java Dubbo 框架編譯運行
    Dubbo是一套開源的Java框架,採用全Spring配置方式,可用來對外提供api接口。Dubbo源碼在github上。從github上倉庫apache/incubator-dubbo下載Dubbo的原始碼,需要系統中已安裝java sdk和maven,java sdk是編譯工具,maven是倉庫依賴管理工具。進入incubator-dubbo目錄,使用maven來編譯軟體包,運行命令mvn package生成軟體包jar文件。