windows下cmake编译VTK到PCL中
補(bǔ)充:
如果嫌編譯麻煩,這里可以下載我編譯好的:VTK-8.0.1,下載后直接拷貝到pcl安裝目錄下替換原VTK目錄。
編譯VTK的原因:
pcl安裝版中自帶的vtk缺少Q(mào)VTKWidget.dll,這樣在QT Designer中就無(wú)法顯示點(diǎn)云。
工具:
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歷史版本下載地址
安裝過(guò)程:
pcl、vs、qt的安裝就不多說(shuō)了,都是exe文件雙擊運(yùn)行就行了。
之前使用的vtk-8.1.1,結(jié)果不能,所以換回了pcl-1.8.1-allinone中自帶的VTK是8.0的版本
這是pcl的安裝目錄,在3rdParty下有自帶的VTK,我們先備份VTK文件夾為VTK_copy,把編譯后的VTK就放到這個(gè)新建的VTK文件夾下
cmake編譯VTK步驟
1、打開(kāi)cmake-gui
source code :VTK-8.1.1.zip解壓后的目錄
build the binaries :在VTK-8.1.1.zip解壓后的目錄下新建一個(gè)build目錄
點(diǎn)擊configure, 選擇編譯器?
configure完成之后一片紅,但是不用擔(dān)心,因?yàn)槲覀冞€沒(méi)有開(kāi)始配置
勾選Grouped和Advanced,進(jìn)行以下設(shè)置:
BUILD下取消勾選BUILD_TESTING,只留BUILD_SHARED_LIBS就行了
CMAKE下CMAKE_INSTALL_PREFIX設(shè)置為你新建的VTK文件夾
INSTALL下目錄也替換成你新建的VTK文件夾
VTK下勾選VTK_Group_Qt,VTK_RENDERING_BACKEND設(shè)置為OpenGL(這里一定要注意,否則pcl顯示框會(huì)出錯(cuò))
點(diǎn)擊Add Entry,添加CMAKE_DEBUG_POSTFIX,Value設(shè)置為-gd(用來(lái)區(qū)別debug和release版本)
再次點(diǎn)擊configure
2018年9月5日更新:
編譯vtk-8.0.1的時(shí)候,由于qt默認(rèn)版本號(hào)是4,這里的5.10的qt會(huì)報(bào)錯(cuò),修改為5即可
再次configure
qt5已經(jīng)自動(dòng)識(shí)別出來(lái)了,目錄正確,無(wú)需修改,點(diǎn)擊configure
點(diǎn)擊generate
點(diǎn)擊open project
2018年9月5日更新
?
?
累,又是一片紅,我這里是安裝anaconda35,里面似乎也有QT,但是我不確定這個(gè)QT是不是好用,所以把QT改為我自己安裝的QT-5.10.1,修改QT5_DIR到自己安裝的QT路徑下
勾選VTK_BUILD_QT_DESIGNER_PLUGIN ,因?yàn)槲揖褪菫榱诉@個(gè)才編譯VTK的
再次config
這個(gè)警告不用管的,因?yàn)槲覀儼袿penGL2改成OpenGL引起的 。
點(diǎn)擊generate
點(diǎn)擊open project,自動(dòng)打開(kāi)vs
首先Debug x64下,右鍵ALL_BUILD重新生成,再右鍵INSTALL設(shè)置為啟動(dòng)項(xiàng)目、重新生成;
然后Release x64下,右鍵ALL_BUILD重新生成,再右鍵INSTALL設(shè)置為啟動(dòng)項(xiàng)目、重新生成;
將3rdParty\VTK\plugins\designer下的QVTKWidgetPlugin.dll拷貝到QT5.10.1\5.10\msvc2015_64\plugins\designer下,這樣Qt Designer里面就有了QVtk的控件了。
當(dāng)我們使用Qt Creater作開(kāi)發(fā)工具的時(shí)候,windows下qt中自帶的qt creater都是32位的,這里我們把QVTKWidgetPlugin.dll拷貝到\Qt5.10.1\Tools\QtCreator\bin\plugins\designer下是沒(méi)有用的,我們?cè)谑褂肣t Creater時(shí)依然看不到QVTKWidget,除非我們?cè)倬幰粋€(gè)32位release版的QVTKWidgetPlugin.dll放到\Qt5.10.1\Tools\QtCreator\bin\plugins\designer,或者裝一個(gè)64位版的Qt Creater
至此PCL在windows下的環(huán)境已經(jīng)搭配好了,可以選擇重啟讓環(huán)境變量生效。
2018年9月5日補(bǔ)充,環(huán)境測(cè)試:
注意:
1、windows下代碼寫法不太一樣,windows生成的ui默認(rèn)是對(duì)象,linux是對(duì)象指針
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);//初始化點(diǎn)云pcl::PointCloud<pcl::PointXYZ>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZ>);//設(shè)置點(diǎn)云大小cloud->points.resize(200);//填充點(diǎn)云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"));//設(shè)置視窗背景色viewer->setBackgroundColor(0, 0, 0);//預(yù)處理點(diǎn)云顏色pcl::visualization::PointCloudColorHandlerCustom<pcl::PointXYZ> magenta(cloud, 255, 0, 255);//把點(diǎn)云加載到視窗viewer->addPointCloud(cloud, magenta, "cloud");//設(shè)置點(diǎn)云大小viewer->setPointCloudRenderingProperties(pcl::visualization::PCL_VISUALIZER_POINT_SIZE, 3, "cloud");//連接qvtkui.qvtkWidget->SetRenderWindow(viewer->getRenderWindow());ui.qvtkWidget->update(); }運(yùn)行結(jié)果:
補(bǔ)充:
如果嫌編譯麻煩,這里可以下載我編譯好的:VTK-8.0.1,下載后直接拷貝到pcl安裝目錄下替換原VTK目錄。
總結(jié)
以上是生活随笔為你收集整理的windows下cmake编译VTK到PCL中的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 漫画:程序员之间的真爱,好暖啊!
- 下一篇: windows10详细配置pcl-1.8