PCL 1.12.0 在 win10 vs2019下的安装与源代码编译。

发布时间:2022-06-28 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了PCL 1.12.0 在 win10 vs2019下的安装与源代码编译。脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

 

1 PCL的安装

编译环境是vs2019 PRofessional + win10

1.1 下载。

https://gIThub.COM/PointCloudLibrary/pcl/releases

PCL 1.12.0 在 win10  vs2019下的安装与源代码编译。

下载这两个文件。

既然要编译代码,为何又要下载他的AllInOne的二进制版本呢?这是因为PCL-1.12.0-AllInOne-msvc2019-win64.exe安装以后,他可以把附带的一堆第三方的库安装进去,我们后面要编译PCL源代码的时候需要这些库。

1.2 先安装整个包

PCL-1.12.0-AllInOne-msvc2019-win64.exe

这个包里面把第三方的库都搞好了,我们就不必在到处找库了。

我的安装的目录是在:

E:projectcameraprojectPCLbin

当然你可以安装在其他目录

PCL 1.12.0 在 win10  vs2019下的安装与源代码编译。

1.3 再安装oPEnni:

.3rdPartyOpenNI2OpenNI-Windows-x64-2.2.msi

注意修改安装目录到当前目录,别默认安装目录,一会儿找不到他在哪里了

PCL 1.12.0 在 win10  vs2019下的安装与源代码编译。

1.4 寻找缺失的dll

然后E:projectcameraprojectPCLbinbin下面随便运行几个exe,发现缺库dll,

比如缺vtk的各种dll,那就到E:projectcameraprojectPCLbin3rdPartyVTK目录下面

搜索所有的dll,将其拷贝到E:projectcameraprojectPCLbinbin

Openni的库也是类似,把openni目录下的所有的dll也拷贝到E:projectcameraprojectPCLbinbin下面。

在E:projectcameraprojectPCLbin3rdParty下面可以看到很多第三方的库。

PCL 1.12.0 在 win10  vs2019下的安装与源代码编译。

把缺失的dll拷贝到E:projectcameraprojectPCLbin之后,把这个目录下的各种exe运行一下,查看是否dll不再缺失。

1.5 写个例子eigen的例子测试一下

#include <iostream>

#include "Dense"

using namespace std;

using namespace Eigen;

int main()

{

MatrixXd test = MatrixXd::Zero(10, 10);

cout << test << endl;

}

Vs2019中include目录中添加E:projectcameraprojectPCLbin3rdPartyEigeneigen3Eigen

运行通过

1.6 写个例子 pcl测试安装好的库

首先打开vs2019 生成一个控制台程序。

把当前代码替换进去:

#include<pcl/Visualization/cloud_viewer.h>

#include<iostream>//标准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中支持的点类型头文件。

int user_data;

using std::cout;

#include "E:projectcameraprojectPCLbinlib.h"

void viewerOneoff(pcl::visualization::PCLVisualizer& viewer) {

viewer.setBackgroundColor(1.0, 0.5, 1.0); //设置背景颜色

}

int main() {

pcl::PointCloud<pcl::PointXYZ>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZ>);

char strfilepath[256] = "E:\project\camera\project\PCL\bin\bin\rabbit.pcd";

if (-1 == pcl::io::loadPCDFile(strfilepath, *cloud)) {

cout << "error input!" << endl;

return -1;

}

cout << cloud->points.size() << endl;

pcl::visualization::CloudViewer viewer("Cloud Viewer"); //创建viewer对象

viewer.showCloud(cloud);

viewer.runOnVisualizationThreadOnce(viewerOneOff);

System("pause");

return 0;

}

注意我写的都是绝对路径,你要把pcd文件换成你自己的路径。

1.6.1 把_CRT_SECURE_NO_WARNINGS添加到

PCL 1.12.0 在 win10  vs2019下的安装与源代码编译。

1.6.2 把各种include添加进入

E:projectcameraprojectPCLbin3rdPartyBoostincludeboost-1_76;

E:projectcameraprojectPCLbin3rdPartyEigeneigen3;

E:projectcameraprojectPCLbin3rdPartyVTKincludevtk-9.0;

PCL 1.12.0 在 win10  vs2019下的安装与源代码编译。

1.6.3 lib文件的添加

使用python 自动搜索所有的lib文件,生成一个lib.h文件,这个python代码为:

import os

From shutil import copyfile

import json

import time

from datetime import datetime

extfilenamelist = [".lib"]

libfile = open("lib.h", "w")

srcpath = os.getcwd();

index=0

for root,dirs,files in os.walk(srcpath):

for file in files:

index+=1

print("scanning "+str(index)+"r",end="")

extfilename = os.path.splitext(file)[-1]

extfilename = extfilename.lower()

if extfilename in extfilenamelist:

file1=os.path.join(root,file)

file2= file1.replace('\','/')

libfile.write("#pragma comment(lib,"+"""+file2+"")"+"n")

libfile.close()

 

把这个python文件命名为seArchlib.py,把这个文件放在E:/project/camera/project/PCL/bin下面,

运行它就会在当前目录下生成一个lib.h

 

这个lib.h 里面包含了当前目录及其子目录下所有的.lib文件。这样就避免了在vs2019中添加无数个lib文件的痛苦。

如果你不会写python就直接抄袭。但是要先安装python,我推荐你安装anaconda。

 

 

这个lib.h是这个样子:

#pragma comment(lib,"E:/project/camera/project/PCL/bin/3rdParty/Boost/lib/libboost_atomic-vc142-mt-gd-x64-1_76.lib")

#pragma comment(lib,"E:/project/camera/project/PCL/bin/3rdParty/Boost/lib/libboost_atomic-vc142-mt-x64-1_76.lib")

#pragma comment(lib,"E:/project/camera/project/PCL/bin/3rdParty/Boost/lib/libboost_bzip2-vc142-mt-gd-x64-1_76.lib")

 

 

编译后出错:

1>LINK : fatal error LNK1104: cannot open file 'libboost_date_time-vc142-mt-gd-x64-1_76.lib'

但是这个文件已经在lib.h中已经添加了,而且文件确实存在,应该是vs2019的bug

于是我们把这个文件所在的目录添加到lib的路径中:

E:projectcameraprojectPCLbin3rdPartyBoostlib

PCL 1.12.0 在 win10  vs2019下的安装与源代码编译。

编译通过

然后把生成exe的目录换到之前安装的目录上去:

E:projectcameraprojectPCLbinbin

PCL 1.12.0 在 win10  vs2019下的安装与源代码编译。

于是我们看到编译好的exe已经出现在E:projectcameraprojectPCLbinbin中了

@H_512_272@

现在准备点pcd文件

PCL 1.12.0 在 win10  vs2019下的安装与源代码编译。

到现在为止,一切准备就绪了,打断点,运行试试

兔子出来了!

2 PCL 1.12.0 源代码编译

2.1 下载

从官网下载source.tar.gz这个文件,解压

进入解压后的子目录,我的目录是

E:projectcameraprojectPCLpcl-1.12.0

2.2 CMake

如果没有安装cmake,需要先安装cmake最新版本。

在控制台下面输入cmake-gui

启动cmake

PCL 1.12.0 在 win10  vs2019下的安装与源代码编译。

Where is the source code: 指向pcl的源代码,就是刚才解压的源代码,我E:projectcameraprojectPCLpcl-1.12.0

Where to build the binaries: 指向编译后的数据存放地点,这个可以随便指定

点击configure按钮

然后会生成一堆东西,各种错误,实际是6个软件包的位置没有指定好,这6个软件包是:

Boost

Eigen

FLANN

OpenNI2

Qhull

VTK

这6个软件包中,有一个很特殊,Eigen他提供的是源代码,而且他很怪,源代码全是以头文件的形式提供,其他软件使用Eigen的时候,只需要把这些h文件include进入自己的源代码即可。

此外Boost是提供的静态库。

其他4个软件包都是以lib和dll的形式提供给其他软件调用。

现在出了一堆错误

PCL 1.12.0 在 win10  vs2019下的安装与源代码编译。

PCL 1.12.0 在 win10  vs2019下的安装与源代码编译。

2.2.1

PCL 1.12.0 在 win10  vs2019下的安装与源代码编译。

切换EIGEN的目录:

PCL 1.12.0 在 win10  vs2019下的安装与源代码编译。

再点击Configure

PCL 1.12.0 在 win10  vs2019下的安装与源代码编译。

这个时候说的是FLANN的目录没有指定

PCL 1.12.0 在 win10  vs2019下的安装与源代码编译。

再点击Configure按钮

PCL 1.12.0 在 win10  vs2019下的安装与源代码编译。

因为我的电脑是AMD的,并没有cuda,所以我就要去掉cuda

PCL 1.12.0 在 win10  vs2019下的安装与源代码编译。

去掉这个WITH_CUDA

去掉WITH_PCAP

PCL 1.12.0 在 win10  vs2019下的安装与源代码编译。

去掉这个WITH_PCAP

PCL 1.12.0 在 win10  vs2019下的安装与源代码编译。

Qhull的目录设好

PCL 1.12.0 在 win10  vs2019下的安装与源代码编译。

PCL 1.12.0 在 win10  vs2019下的安装与源代码编译。

这个QT的部分,我之前脑上已经安装QT了,而且也安装了anaconda3,他自动找到了

设定安装目录:

PCL 1.12.0 在 win10  vs2019下的安装与源代码编译。

2.2.2 VTK的安装

接下来应该安装VTK_DIR了

CMake Warning at cmake/pcl_find_vtk.cmake:25 (find_package):By not providing "FindVTK.cmake" in CMAKE_MODULE_PATH this project hasasked CMake to find a package configuration file provided by "VTK", butCMake did not find one.Could not find a package configuration file provided by "VTK" with any ofthe following names:VTKConfig.cmakevtk-config.cmake

很奇怪,既然VTK实际前面已经下载,但是他只是库,这个意思是要VTK的源代码啊,那就去下载VTK源代码吧,下载后放在这里

VTK-9.1.0

PCL 1.12.0 在 win10  vs2019下的安装与源代码编译。

PCL 1.12.0 在 win10  vs2019下的安装与源代码编译。

设定好目录

在Configure

VTK还是不行。

那就先编译VTK把

这个cmake先关闭

重新打开cmake-gui,把源代码切换到刚才现在的vtk中,Build目录另外找一个目录

PCL 1.12.0 在 win10  vs2019下的安装与源代码编译。

点击Configure,出错,一堆红色,再点击Configure,ok

这个地方要注意,把那个VTK的安装目录不要设置在c盘,C盘的读写需要特定权限,我把他设定在

E:projectcameraprojectPCLbin3rdPartyVTK

如图:

PCL 1.12.0 在 win10  vs2019下的安装与源代码编译。

再Configure,Generate,Open Porject

在vs2019中编译非常顺利,编译完成之后,

可以发现

Skipped Build: Project: INSTALL, Configuration: Debug x64 ------

259>Project not selected to build for this solution configuration

在INSTALL这个项目上右键set startup project

在INSTALL 右键Build

于是VTK就被安装了,

PCL 1.12.0 在 win10  vs2019下的安装与源代码编译。

E:projectcameraprojectPCLbin3rdPartyVTK

目录上已经被安装好了

关闭cmake-gui。

重新打开cmake-gui,把build目录切换到

E:/project/camera/project/PCL/bin/build

把VTK_DIR设定为刚才VTKBild那个子目录,就是VTK编译的目录,再点击Configure,发现VTK错误不见了。

2.2.3 Boost的问题。

再Configure之后,Boost错误出现了:

Could NOT find Boost (missing: Boost_INCLUDE_DIR filesystem date_timeiostreams system) (Required is at least version "1.65.0")

这就是说Boost找不到。

但是这个里面并没有找到 Boost_INCLUDE_DIR 这一行,那就添加吧

电机Add Entry按钮添加:

PCL 1.12.0 在 win10  vs2019下的安装与源代码编译。

PCL 1.12.0 在 win10  vs2019下的安装与源代码编译。

继续Configure,无效,还是同样的错误。

到网上查资料,发现有人说:

CMake/share/cmake-3.18/Modules/FindBoost.cmake 文件里规定的debug参数: Boost_DEBUG=ON

添加一个Entry: Boost_DEBUG,设置为True

点击Configure

出现一堆调试信息

然后可以看到:

BOOST_ROOT

BOOST_INCLUDEDIR

BOOST_LIBRARYDIR

都没有设定好。于是加入3个entry

BOOST_ROOT设定为:E:projectcameraprojectPCLbin3rdPartyBoost

BOOST_INCLUDEDIR设定为:E:projectcameraprojectPCLbin3rdPartyBoostinclude

BOOST_LIBRARYDIR设定为:E:projectcameraprojectPCLbin3rdPartyBoostlib

Boost是一个静态库

再点击configure,似乎就过了

点击Generate,然后再点击Open Project

2.3 PCL编译

点击cmake的OpenProject后就打开了vs2019

编译,出错

Build started: Project: pcl_io

E:projectcameraprojectPCLpcl-1.12.0ioincludepcl/io/vtk_lib_io.h(71,10): fatal error C1083: Cannot open include file: 'vtkPolyDataNormals.h': No such file or directory

vtkPolyDataNormals.h这个文件出现在

E:projectcameraprojectPCLbin3rdPartyVTKincludevtk-9.1

找到这个出错的项目

PCL 1.12.0 在 win10  vs2019下的安装与源代码编译。

PCL 1.12.0 在 win10  vs2019下的安装与源代码编译。

如上图所示:

E:projectcameraprojectPCLbin3rdPartyVTKincludevtk-9.1

加入到Include Directories

编译后这个pcl_io项目就编译成功了

后面出现的错误基本都是这个情况,把

E:projectcameraprojectPCLbin3rdPartyVTKincludevtk-9.1

添加到对应项目的Include Directories就可以了

编译完成以后,开始安装:

PCL 1.12.0 在 win10  vs2019下的安装与源代码编译。

把INSTALL这个目录上右键选Set as Startup Project,然后INSTALL 右键Build。

发现这个PCL被安装到

E:projectcameraprojectPCLbinbin

下面了

PCL 1.12.0 在 win10  vs2019下的安装与源代码编译。

现在删除掉之前安装包安装的PCL,使用新生成的PCL安装包。

运行searchlib.py,会找到全部的lib,然后生成lib.h

此时各种动态库的路径为:

E:projectcameraprojectPCLbin3rdPartyFLANNbin

E:projectcameraprojectPCLbin3rdPartyOpenNI2Redist

E:projectcameraprojectPCLbin3rdPartyQhullbin

E:projectcameraprojectPCLbin3rdPartyVTKbin

E:projectcameraprojectPCLbinbinbin

把这些DLL库的路径加入到你的PATH,下面调试后的时候好找到这些DLL。

现在把上面写好那个读PCD文件的例子用这个来编译,发现一切ok。

运行:

PCL 1.12.0 在 win10  vs2019下的安装与源代码编译。

啥也没有啊

点击画面,滚动鼠标

PCL 1.12.0 在 win10  vs2019下的安装与源代码编译。

Ok

有问题联系我: panxixue@QQ.com

脚本宝典总结

以上是脚本宝典为你收集整理的PCL 1.12.0 在 win10 vs2019下的安装与源代码编译。全部内容,希望文章能够帮你解决PCL 1.12.0 在 win10 vs2019下的安装与源代码编译。所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。