windows下cmake编译VTK到PCL中
補充:
如果嫌編譯麻煩,這里可以下載我編譯好的:VTK-8.0.1,下載后直接拷貝到pcl安裝目錄下替換原VTK目錄。
編譯VTK的原因:
pcl安裝版中自帶的vtk缺少QVTKWidget.dll,這樣在QT Designer中就無法顯示點云。
工具:
cmake-3.11
pcl-1.8.1-allinone,pcl-1.8.1-pdb
vs2015
Qt5.10.1 下載地址:official_release版
vtk-8.0.1 下載地址:vtk-8.0.1
vtk歷史版本下載地址
安裝過程:
pcl、vs、qt的安裝就不多說了,都是exe文件雙擊運行就行了。
之前使用的vtk-8.1.1,結果不能,所以換回了pcl-1.8.1-allinone中自帶的VTK是8.0的版本
這是pcl的安裝目錄,在3rdParty下有自帶的VTK,我們先備份VTK文件夾為VTK_copy,把編譯后的VTK就放到這個新建的VTK文件夾下
cmake編譯VTK步驟
1、打開cmake-gui
source code :VTK-8.1.1.zip解壓后的目錄
build the binaries :在VTK-8.1.1.zip解壓后的目錄下新建一個build目錄
點擊configure, 選擇編譯器?
configure完成之后一片紅,但是不用擔心,因為我們還沒有開始配置
勾選Grouped和Advanced,進行以下設置:
BUILD下取消勾選BUILD_TESTING,只留BUILD_SHARED_LIBS就行了
CMAKE下CMAKE_INSTALL_PREFIX設置為你新建的VTK文件夾
INSTALL下目錄也替換成你新建的VTK文件夾
VTK下勾選VTK_Group_Qt,VTK_RENDERING_BACKEND設置為OpenGL(這里一定要注意,否則pcl顯示框會出錯)
點擊Add Entry,添加CMAKE_DEBUG_POSTFIX,Value設置為-gd(用來區別debug和release版本)
再次點擊configure
2018年9月5日更新:
編譯vtk-8.0.1的時候,由于qt默認版本號是4,這里的5.10的qt會報錯,修改為5即可
再次configure
qt5已經自動識別出來了,目錄正確,無需修改,點擊configure
點擊generate
點擊open project
2018年9月5日更新
?
?
累,又是一片紅,我這里是安裝anaconda35,里面似乎也有QT,但是我不確定這個QT是不是好用,所以把QT改為我自己安裝的QT-5.10.1,修改QT5_DIR到自己安裝的QT路徑下
勾選VTK_BUILD_QT_DESIGNER_PLUGIN ,因為我就是為了這個才編譯VTK的
再次config
這個警告不用管的,因為我們把OpenGL2改成OpenGL引起的 。
點擊generate
點擊open project,自動打開vs
首先Debug x64下,右鍵ALL_BUILD重新生成,再右鍵INSTALL設置為啟動項目、重新生成;
然后Release x64下,右鍵ALL_BUILD重新生成,再右鍵INSTALL設置為啟動項目、重新生成;
將3rdParty\VTK\plugins\designer下的QVTKWidgetPlugin.dll拷貝到QT5.10.1\5.10\msvc2015_64\plugins\designer下,這樣Qt Designer里面就有了QVtk的控件了。
當我們使用Qt Creater作開發工具的時候,windows下qt中自帶的qt creater都是32位的,這里我們把QVTKWidgetPlugin.dll拷貝到\Qt5.10.1\Tools\QtCreator\bin\plugins\designer下是沒有用的,我們在使用Qt Creater時依然看不到QVTKWidget,除非我們再編一個32位release版的QVTKWidgetPlugin.dll放到\Qt5.10.1\Tools\QtCreator\bin\plugins\designer,或者裝一個64位版的Qt Creater
至此PCL在windows下的環境已經搭配好了,可以選擇重啟讓環境變量生效。
2018年9月5日補充,環境測試:
注意:
1、windows下代碼寫法不太一樣,windows生成的ui默認是對象,linux是對象指針
linux:ui->qvtkWidget->setRenderWindow();
windows: ui.qvtkWidget->setRedderWindow();
示例:
#include "pclviewer.h" #include <pcl\visualization\pcl_visualizer.h> #include <pcl\point_cloud.h> #include <pcl\point_types.h> //vtk #include <vtkRenderWindow.h>PCLViewer::PCLViewer(QWidget *parent): QMainWindow(parent) {ui.setupUi(this);//初始化點云pcl::PointCloud<pcl::PointXYZ>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZ>);//設置點云大小cloud->points.resize(200);//填充點云for (size_t i = 0; i < cloud->points.size(); ++i){cloud->points[i].x = 1024 * rand() / (RAND_MAX + 1.0f);cloud->points[i].y = 1024 * rand() / (RAND_MAX + 1.0f);cloud->points[i].z = 1024 * rand() / (RAND_MAX + 1.0f);}//聲明視窗boost::shared_ptr<pcl::visualization::PCLVisualizer> viewer(new pcl::visualization::PCLVisualizer("3D Viewer"));//設置視窗背景色viewer->setBackgroundColor(0, 0, 0);//預處理點云顏色pcl::visualization::PointCloudColorHandlerCustom<pcl::PointXYZ> magenta(cloud, 255, 0, 255);//把點云加載到視窗viewer->addPointCloud(cloud, magenta, "cloud");//設置點云大小viewer->setPointCloudRenderingProperties(pcl::visualization::PCL_VISUALIZER_POINT_SIZE, 3, "cloud");//連接qvtkui.qvtkWidget->SetRenderWindow(viewer->getRenderWindow());ui.qvtkWidget->update(); }運行結果:
補充:
如果嫌編譯麻煩,這里可以下載我編譯好的:VTK-8.0.1,下載后直接拷貝到pcl安裝目錄下替換原VTK目錄。
總結
以上是生活随笔為你收集整理的windows下cmake编译VTK到PCL中的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 漫画:程序员之间的真爱,好暖啊!
- 下一篇: windows10详细配置pcl-1.8