天天看點

安裝Cmake,PCL,VTK,QT,配置scan3d-capture的一些心得與記錄一、Cmake二、QT的安裝與編譯三、 VTK的安裝與編譯四、PCL的安裝與編譯附錄:

最近在編譯一個項目,scan3d-caputure,配置它需要調用一些第三方庫,如Opencv,VTK,QT,還需要用到一個非常強大的軟體cmake(一個跨平台編譯器),整個過程用了我三到四天的時間,差點給我整奔潰了,是以在此記錄一下遇到的一些問題,以免之後忘記。

一、Cmake

⑴cmake的下載下傳與安裝都不難,去網站下載下傳就行,不過要看清它的版本。

⑵cmakelist是一個項目組建的核心,必須逐漸了解它每句代碼的含義,以及怎麼去寫一個工程的cmakelist,如最基本的:

①CMAKE_MINIMUM_REQUIRED(VERSION 2.6) #所需cmake的最低版本 ;② PROJECT(HELLO) #項目名稱 ;③要注意cmakelist裡面的path,需要改成自己安裝包對應的路徑;……

⑶cmake界面有這麼幾個注意的地方:

①"where is the source code:" 此處放源碼的路徑;

②"where to build the binaries" 此處放生成項目的路徑;

③"Search"用來查找檔案的位置,注意有部分檔案會重名,這時候自動檢測到的路徑可能會有問題,如果configure的時候報某一個檔案出錯,可以search一下看看路徑是不是錯了,或者是能不能找到該檔案的位置,如果找不到的話,需要後面的一個按鈕"Add Entry"來手動添加路徑;

④"configure"是用來配置源碼,"Generate"是用來生成檔案的,"Open Project"用來打開所生成的檔案

安裝Cmake,PCL,VTK,QT,配置scan3d-capture的一些心得與記錄一、Cmake二、QT的安裝與編譯三、 VTK的安裝與編譯四、PCL的安裝與編譯附錄:

二、QT的安裝與編譯

⑴QT裝安裝版就行,裝完把環境變量添加進去,并且重新開機

安裝Cmake,PCL,VTK,QT,配置scan3d-capture的一些心得與記錄一、Cmake二、QT的安裝與編譯三、 VTK的安裝與編譯四、PCL的安裝與編譯附錄:

⑵注意在選擇元件時,可以将倆個元件都勾選

安裝Cmake,PCL,VTK,QT,配置scan3d-capture的一些心得與記錄一、Cmake二、QT的安裝與編譯三、 VTK的安裝與編譯四、PCL的安裝與編譯附錄:

三、 VTK的安裝與編譯

⑴ VTK全稱是Visualization Toolkit,即可視化工具包。它是一個開源、跨平台、可自由擷取、支援并行處理的圖形應用函數庫。VTK主要用于三維計算機圖形學、圖像處理和可視化。VTK是在面向對象原理的基礎上設計和實作的,它的核心是用C++建構的,包含有大約250,000行代碼,2000多個類,還包含有幾個轉換界面,是以也可以自由的通過Java,TCL/TK和Python各種語言使用VTK。通過VTK将科學實驗資料如建築學、氣象學、醫學、生物學或者航空航天學,對體、面、光源等等的逼真渲染,進而幫助人們了解那些采取錯綜複雜而又往往規模龐大的數字呈現形式的科學概念或結果。

⑵ 基本環境:

①Windows系統 Win10 64位

②VS2019

③QT5.14.2

④cmake-3.19.2-win64-x64

⑤VTK8.2.0

⑶ 編譯過程:

VTK的下載下傳很簡單,直接去官網下載下傳源碼(一個壓縮包解壓後就可以得到),繁瑣的是編譯的過程。打開cmake,将下載下傳好的vtk源碼放在source code,相應的建立一個空目錄用來放生成的目錄,然後開始編譯,調bug。

具體步驟參考該文章:VTK的編譯安裝教程

四、PCL的安裝與編譯

PCL全稱為Point Cloud Library,是一個用于三維點雲處理的開源庫。它包含了從傳感器或三維資料檔案中檢索三維點雲的各種處理。如果說OpenCV是2D資訊擷取與處理的結晶,那麼PCL就在3D資訊擷取與處理上具有同等地位,且PCL是BSD授權方式,可以免費進行商業和學術應用,可在Windows、Linux、Mac OS X等作業系統中運作。

PCL的下載下傳很簡單,關鍵也是編譯過程,可參考以下倆篇文章:

1、win10+vs2019+pcl1.11.0安裝教程

2、工程環境配置 使用QT+PCL點雲可視化 QT5.7.1 + VTK8.2.0 + PCL1.11.0 + VS2019 + OpenCV4.3.0 +Cmake3.18.0

附錄:

1、PCL lib 檔案名清單

debuge:

pcl_commond.lib
pcl_featuresd.lib
pcl_filtersd.lib
pcl_iod.lib
pcl_io_plyd.lib
pcl_kdtreed.lib
pcl_keypointsd.lib
pcl_mld.lib
pcl_octreed.lib
pcl_outofcored.lib
pcl_peopled.lib
pcl_recognitiond.lib
pcl_registrationd.lib
pcl_sample_consensusd.lib
pcl_searchd.lib
pcl_segmentationd.lib
pcl_stereod.lib
pcl_surfaced.lib
pcl_trackingd.lib
pcl_visualizationd.lib
pcl_commond.lib
pcl_featuresd.lib
pcl_filtersd.lib
pcl_iod.lib
pcl_io_plyd.lib
pcl_kdtreed.lib
pcl_keypointsd.lib
pcl_mld.lib
pcl_octreed.lib
pcl_outofcored.lib
pcl_peopled.lib
pcl_recognitiond.lib
pcl_registrationd.lib
pcl_sample_consensusd.lib
pcl_searchd.lib
pcl_segmentationd.lib
pcl_stereod.lib
pcl_surfaced.lib
pcl_trackingd.lib
pcl_visualizationd.lib

libboost_atomic-vc142-mt-gd-x64-1_73.lib
libboost_bzip2-vc142-mt-gd-x64-1_73.lib
libboost_chrono-vc142-mt-gd-x64-1_73.lib
libboost_container-vc142-mt-gd-x64-1_73.lib
libboost_context-vc142-mt-gd-x64-1_73.lib
libboost_contract-vc142-mt-gd-x64-1_73.lib
libboost_coroutine-vc142-mt-gd-x64-1_73.lib
libboost_date_time-vc142-mt-gd-x64-1_73.lib
libboost_exception-vc142-mt-gd-x64-1_73.lib
libboost_fiber-vc142-mt-gd-x64-1_73.lib
libboost_filesystem-vc142-mt-gd-x64-1_73.lib
libboost_graph-vc142-mt-gd-x64-1_73.lib
libboost_graph_parallel-vc142-mt-gd-x64-1_73.lib
libboost_iostreams-vc142-mt-gd-x64-1_73.lib
libboost_locale-vc142-mt-gd-x64-1_73.lib
libboost_log-vc142-mt-gd-x64-1_73.lib
libboost_log_setup-vc142-mt-gd-x64-1_73.lib
libboost_math_c99-vc142-mt-gd-x64-1_73.lib
libboost_math_c99f-vc142-mt-gd-x64-1_73.lib
libboost_math_c99l-vc142-mt-gd-x64-1_73.lib
libboost_math_tr1-vc142-mt-gd-x64-1_73.lib
libboost_math_tr1f-vc142-mt-gd-x64-1_73.lib
libboost_math_tr1l-vc142-mt-gd-x64-1_73.lib
libboost_mpi-vc142-mt-gd-x64-1_73.lib
libboost_nowide-vc142-mt-gd-x64-1_73.lib
libboost_numpy38-vc142-mt-gd-x64-1_73.lib
libboost_prg_exec_monitor-vc142-mt-gd-x64-1_73.lib
libboost_program_options-vc142-mt-gd-x64-1_73.lib
libboost_python38-vc142-mt-gd-x64-1_73.lib
libboost_random-vc142-mt-gd-x64-1_73.lib
libboost_regex-vc142-mt-gd-x64-1_73.lib
libboost_serialization-vc142-mt-gd-x64-1_73.lib
libboost_stacktrace_noop-vc142-mt-gd-x64-1_73.lib
libboost_stacktrace_windbg-vc142-mt-gd-x64-1_73.lib
libboost_stacktrace_windbg_cached-vc142-mt-gd-x64-1_73.lib
libboost_system-vc142-mt-gd-x64-1_73.lib
libboost_test_exec_monitor-vc142-mt-gd-x64-1_73.lib
libboost_thread-vc142-mt-gd-x64-1_73.lib
libboost_timer-vc142-mt-gd-x64-1_73.lib
libboost_type_erasure-vc142-mt-gd-x64-1_73.lib
libboost_unit_test_framework-vc142-mt-gd-x64-1_73.lib
libboost_wave-vc142-mt-gd-x64-1_73.lib
libboost_wserialization-vc142-mt-gd-x64-1_73.lib
libboost_zlib-vc142-mt-gd-x64-1_73.lib
libboost_atomic-vc142-mt-gd-x64-1_73.lib
libboost_bzip2-vc142-mt-gd-x64-1_73.lib
libboost_chrono-vc142-mt-gd-x64-1_73.lib
libboost_container-vc142-mt-gd-x64-1_73.lib
libboost_context-vc142-mt-gd-x64-1_73.lib
libboost_contract-vc142-mt-gd-x64-1_73.lib
libboost_coroutine-vc142-mt-gd-x64-1_73.lib
libboost_date_time-vc142-mt-gd-x64-1_73.lib
libboost_exception-vc142-mt-gd-x64-1_73.lib
libboost_fiber-vc142-mt-gd-x64-1_73.lib
libboost_filesystem-vc142-mt-gd-x64-1_73.lib
libboost_graph-vc142-mt-gd-x64-1_73.lib
libboost_graph_parallel-vc142-mt-gd-x64-1_73.lib
libboost_iostreams-vc142-mt-gd-x64-1_73.lib
libboost_locale-vc142-mt-gd-x64-1_73.lib
libboost_log-vc142-mt-gd-x64-1_73.lib
libboost_log_setup-vc142-mt-gd-x64-1_73.lib
libboost_math_c99-vc142-mt-gd-x64-1_73.lib
libboost_math_c99f-vc142-mt-gd-x64-1_73.lib
libboost_math_c99l-vc142-mt-gd-x64-1_73.lib
libboost_math_tr1-vc142-mt-gd-x64-1_73.lib
libboost_math_tr1f-vc142-mt-gd-x64-1_73.lib
libboost_math_tr1l-vc142-mt-gd-x64-1_73.lib
libboost_mpi-vc142-mt-gd-x64-1_73.lib
libboost_nowide-vc142-mt-gd-x64-1_73.lib
libboost_numpy38-vc142-mt-gd-x64-1_73.lib
libboost_prg_exec_monitor-vc142-mt-gd-x64-1_73.lib
libboost_program_options-vc142-mt-gd-x64-1_73.lib
libboost_python38-vc142-mt-gd-x64-1_73.lib
libboost_random-vc142-mt-gd-x64-1_73.lib
libboost_regex-vc142-mt-gd-x64-1_73.lib
libboost_serialization-vc142-mt-gd-x64-1_73.lib
libboost_stacktrace_noop-vc142-mt-gd-x64-1_73.lib
libboost_stacktrace_windbg-vc142-mt-gd-x64-1_73.lib
libboost_stacktrace_windbg_cached-vc142-mt-gd-x64-1_73.lib
libboost_system-vc142-mt-gd-x64-1_73.lib
libboost_test_exec_monitor-vc142-mt-gd-x64-1_73.lib
libboost_thread-vc142-mt-gd-x64-1_73.lib
libboost_timer-vc142-mt-gd-x64-1_73.lib
libboost_type_erasure-vc142-mt-gd-x64-1_73.lib
libboost_unit_test_framework-vc142-mt-gd-x64-1_73.lib
libboost_wave-vc142-mt-gd-x64-1_73.lib
libboost_wserialization-vc142-mt-gd-x64-1_73.lib
libboost_zlib-vc142-mt-gd-x64-1_73.lib

OpenNI2.lib


           

release:

pcl_common.lib
pcl_features.lib
pcl_filters.lib
pcl_io.lib
pcl_io_ply.lib
pcl_kdtree.lib
pcl_keypoints.lib
pcl_ml.lib
pcl_octree.lib
pcl_outofcore.lib
pcl_people.lib
pcl_recognition.lib
pcl_registration.lib
pcl_sample_consensus.lib
pcl_search.lib
pcl_segmentation.lib
pcl_stereo.lib
pcl_surface.lib
pcl_tracking.lib
pcl_visualization.lib
pcl_common.lib
pcl_features.lib
pcl_filters.lib
pcl_io.lib
pcl_io_ply.lib
pcl_kdtree.lib
pcl_keypoints.lib
pcl_ml.lib
pcl_octree.lib
pcl_outofcore.lib
pcl_people.lib
pcl_recognition.lib
pcl_registration.lib
pcl_sample_consensus.lib
pcl_search.lib
pcl_segmentation.lib
pcl_stereo.lib
pcl_surface.lib
pcl_tracking.lib
pcl_visualization.lib

libboost_atomic-vc142-mt-x64-1_73.lib
libboost_bzip2-vc142-mt-x64-1_73.lib
libboost_chrono-vc142-mt-x64-1_73.lib
libboost_container-vc142-mt-x64-1_73.lib
libboost_context-vc142-mt-x64-1_73.lib
libboost_contract-vc142-mt-x64-1_73.lib
libboost_coroutine-vc142-mt-x64-1_73.lib
libboost_date_time-vc142-mt-x64-1_73.lib
libboost_exception-vc142-mt-x64-1_73.lib
libboost_fiber-vc142-mt-x64-1_73.lib
libboost_filesystem-vc142-mt-x64-1_73.lib
libboost_graph-vc142-mt-x64-1_73.lib
libboost_graph_parallel-vc142-mt-x64-1_73.lib
libboost_iostreams-vc142-mt-x64-1_73.lib
libboost_locale-vc142-mt-x64-1_73.lib
libboost_log-vc142-mt-x64-1_73.lib
libboost_log_setup-vc142-mt-x64-1_73.lib
libboost_math_c99-vc142-mt-x64-1_73.lib
libboost_math_c99f-vc142-mt-x64-1_73.lib
libboost_math_c99l-vc142-mt-x64-1_73.lib
libboost_math_tr1-vc142-mt-x64-1_73.lib
libboost_math_tr1f-vc142-mt-x64-1_73.lib
libboost_math_tr1l-vc142-mt-x64-1_73.lib
libboost_mpi-vc142-mt-x64-1_73.lib
libboost_nowide-vc142-mt-x64-1_73.lib
libboost_numpy38-vc142-mt-x64-1_73.lib
libboost_prg_exec_monitor-vc142-mt-x64-1_73.lib
libboost_program_options-vc142-mt-x64-1_73.lib
libboost_python38-vc142-mt-x64-1_73.lib
libboost_random-vc142-mt-x64-1_73.lib
libboost_regex-vc142-mt-x64-1_73.lib
libboost_serialization-vc142-mt-x64-1_73.lib
libboost_stacktrace_noop-vc142-mt-x64-1_73.lib
libboost_stacktrace_windbg-vc142-mt-x64-1_73.lib
libboost_stacktrace_windbg_cached-vc142-mt-x64-1_73.lib
libboost_system-vc142-mt-x64-1_73.lib
libboost_test_exec_monitor-vc142-mt-x64-1_73.lib
libboost_thread-vc142-mt-x64-1_73.lib
libboost_timer-vc142-mt-x64-1_73.lib
libboost_type_erasure-vc142-mt-x64-1_73.lib
libboost_unit_test_framework-vc142-mt-x64-1_73.lib
libboost_wave-vc142-mt-x64-1_73.lib
libboost_wserialization-vc142-mt-x64-1_73.lib
libboost_zlib-vc142-mt-x64-1_73.lib
libboost_atomic-vc142-mt-x64-1_73.lib
libboost_bzip2-vc142-mt-x64-1_73.lib
libboost_chrono-vc142-mt-x64-1_73.lib
libboost_container-vc142-mt-x64-1_73.lib
libboost_context-vc142-mt-x64-1_73.lib
libboost_contract-vc142-mt-x64-1_73.lib
libboost_coroutine-vc142-mt-x64-1_73.lib
libboost_date_time-vc142-mt-x64-1_73.lib
libboost_exception-vc142-mt-x64-1_73.lib
libboost_fiber-vc142-mt-x64-1_73.lib
libboost_filesystem-vc142-mt-x64-1_73.lib
libboost_graph-vc142-mt-x64-1_73.lib
libboost_graph_parallel-vc142-mt-x64-1_73.lib
libboost_iostreams-vc142-mt-x64-1_73.lib
libboost_locale-vc142-mt-x64-1_73.lib
libboost_log-vc142-mt-x64-1_73.lib
libboost_log_setup-vc142-mt-x64-1_73.lib
libboost_math_c99-vc142-mt-x64-1_73.lib
libboost_math_c99f-vc142-mt-x64-1_73.lib
libboost_math_c99l-vc142-mt-x64-1_73.lib
libboost_math_tr1-vc142-mt-x64-1_73.lib
libboost_math_tr1f-vc142-mt-x64-1_73.lib
libboost_math_tr1l-vc142-mt-x64-1_73.lib
libboost_mpi-vc142-mt-x64-1_73.lib
libboost_nowide-vc142-mt-x64-1_73.lib
libboost_numpy38-vc142-mt-x64-1_73.lib
libboost_prg_exec_monitor-vc142-mt-x64-1_73.lib
libboost_program_options-vc142-mt-x64-1_73.lib
libboost_python38-vc142-mt-x64-1_73.lib
libboost_random-vc142-mt-x64-1_73.lib
libboost_regex-vc142-mt-x64-1_73.lib
libboost_serialization-vc142-mt-x64-1_73.lib
libboost_stacktrace_noop-vc142-mt-x64-1_73.lib
libboost_stacktrace_windbg-vc142-mt-x64-1_73.lib
libboost_stacktrace_windbg_cached-vc142-mt-x64-1_73.lib
libboost_system-vc142-mt-x64-1_73.lib
libboost_test_exec_monitor-vc142-mt-x64-1_73.lib
libboost_thread-vc142-mt-x64-1_73.lib
libboost_timer-vc142-mt-x64-1_73.lib
libboost_type_erasure-vc142-mt-x64-1_73.lib
libboost_unit_test_framework-vc142-mt-x64-1_73.lib
libboost_wave-vc142-mt-x64-1_73.lib
libboost_wserialization-vc142-mt-x64-1_73.lib
libboost_zlib-vc142-mt-x64-1_73.lib

OpenNI2.lib


           

2、可能遇到的一些錯誤(我遇到的):

⑴、cmake找不到Qt5WebKitWidgets → 在search裡面搜QT,把 QT web 的選項 取消。

安裝Cmake,PCL,VTK,QT,配置scan3d-capture的一些心得與記錄一、Cmake二、QT的安裝與編譯三、 VTK的安裝與編譯四、PCL的安裝與編譯附錄:

⑵、vs2019裡面報錯MSB804此項目需要MFC庫 → 暫時這麼做:在 cmake 裡面 搜 MFC, 把 GUISupportMFC 取消

安裝Cmake,PCL,VTK,QT,配置scan3d-capture的一些心得與記錄一、Cmake二、QT的安裝與編譯三、 VTK的安裝與編譯四、PCL的安裝與編譯附錄:

⑶、VS2019裡面報錯,無法打開PCL的一些庫 →因為我是在運作scan3d-capture這個項目時報的錯,無法調用pcl的庫,是以首先要檢查一下該項目下的cmakelist中是不是有部分pcl的路徑沒有改成本機的路徑( 如該代碼“${PCL_Root_Path}”需要改為本機的真實路徑),然後呢,就是要檢查一下環境變量,是不是把pcl需要的路徑都添加進去了。

安裝Cmake,PCL,VTK,QT,配置scan3d-capture的一些心得與記錄一、Cmake二、QT的安裝與編譯三、 VTK的安裝與編譯四、PCL的安裝與編譯附錄:

⑷、無法解析外部符号 → 該問題一般是由于附加依賴項導緻的,右鍵 scan3d-capture -》屬性 --》連結器-》輸入-》附加依賴項, 原有的附加依賴項不變動,将我附錄一裡面的附加依賴項添加進去(注意debug模式下編譯隻需添加debug的附加依賴項,release模式對應的release的附加依賴項,還需注意的是每次重新cmake後,附加依賴項都會重置為系統預設,此時需要再進行确認修改)

安裝Cmake,PCL,VTK,QT,配置scan3d-capture的一些心得與記錄一、Cmake二、QT的安裝與編譯三、 VTK的安裝與編譯四、PCL的安裝與編譯附錄:

⑸、項目編譯成功後,但運作又出錯了,由于找不到vtkGUISupportQT-8.2.dll,無法繼續執行代碼。 → 可從以下幾個方面着手解決:①在vtk的cmake裡面搜QT,檢查一下qt的路徑是否有錯;②在vtk工程裡面找報錯提示的找不到的項目,在該項目上右鍵生成;③用Everything軟體搜一下該dll檔案在哪個目錄下,将該目錄添加進系統的環境變量裡邊。

安裝Cmake,PCL,VTK,QT,配置scan3d-capture的一些心得與記錄一、Cmake二、QT的安裝與編譯三、 VTK的安裝與編譯四、PCL的安裝與編譯附錄:
安裝Cmake,PCL,VTK,QT,配置scan3d-capture的一些心得與記錄一、Cmake二、QT的安裝與編譯三、 VTK的安裝與編譯四、PCL的安裝與編譯附錄:

⑹、無法定位程式輸入點…與動态連結庫…dll上 →可能是沒有加載最新的dll導緻,需要删除舊的動态連結庫。可以這麼操作:将release和debug下組成的檔案全部删除,重新編譯一下,還需要注意,如果實在debug模式下編譯,那麼需要将系統的環境變量裡面debug那個路徑上移到release模式上面。

安裝Cmake,PCL,VTK,QT,配置scan3d-capture的一些心得與記錄一、Cmake二、QT的安裝與編譯三、 VTK的安裝與編譯四、PCL的安裝與編譯附錄:

⑺、運作是又報錯,找不到某一個包的位置,“This application failed to start because it could not find or load the Qt plaform plugin windows in” → 還是環境變量的問題,将環境變量添加進去後登出或者重新開機電腦以生效。

安裝Cmake,PCL,VTK,QT,配置scan3d-capture的一些心得與記錄一、Cmake二、QT的安裝與編譯三、 VTK的安裝與編譯四、PCL的安裝與編譯附錄:
安裝Cmake,PCL,VTK,QT,配置scan3d-capture的一些心得與記錄一、Cmake二、QT的安裝與編譯三、 VTK的安裝與編譯四、PCL的安裝與編譯附錄:
下一篇: 小狗

繼續閱讀