Open3D C++ 学习(1)安装
![](http://n4.ikafan.com/assetsj/blank.gif)
Open3D是一个开源库,支持快速开发和处理3D数据。Open3D在c++和Python中公开了一组精心选择的数据结构和算法。后端是高度优化的,并且是为并行化而设置的。
由于Open3D在国内资料是比较少的,比如我之前想下载一份编译好的Open3D库的C++版本,无论你是在百度,CSDN还是google都难直接下载到,不过确实是因为PCL相比Open3D的C++版本更友好,公众号在普及和汇总分享关于点云PCL库的使用以及大部分资料外,我和Blue 正在致力于Open3D的中文资料的翻译与实验研究,并分享给更多热爱3D点云处理的朋友,同时也欢迎更多志同道合的小伙伴们能够加入我们一起分享。
其中blue同学负责Open3D 中python的接口以及教程的翻译与实验,而本人则负责C++的部分,并且维持在写PCL相关库的博客风格,将从细节上记录每一次的实验和使用过程,同时也欢迎更多的小伙伴加入其中。
ubuntu16.04源码安装与编译
C++ api接口查询:http://www.open3d.org/docs/release/cpp_api/index.html
(1)克隆Open3D
git clone --recursive https://github.com/intel-isl/Open3D
请确保使用--recursive标志。如此可以确保我们在下载源码的时候能够将Open3D依赖的第三方库都一起下载下来。在3rdparty文件夹下有很多的第三方依赖项,同时也可以理解,毕竟Open3D还支持python的接口,所以这是一个全部的依赖项。
(2)编译
由于我们主要集中对Open3D的C++ 相关内容进行介绍,所以这里对python的安装以及使用可以查看我的合伙人blue同学的翻译,并且接下来关于python的一些使用和技巧这里将不再讨论,并且专注于C++ 的接口以及相关例程的实验。
克隆完整的Open3D之后,首先使用自带的脚本文件下载必要的库文件,如果跳过这一步编译是会出错的。进入到Open3D文件夹下执行
util/scripts/install-deps-ubuntu.sh
一路选择Y安装下去即可(但是这个过程中需要了一个问题,就是会卸载我安装的ROS 的依赖项目,原因应该是python的版本的冲突,所以需要注意一下)
正常的C++ 开源代码的编译的方式:
mkdir build
cd build
cmake ..(这一步可能还需要下载一些依赖库,所以要耐心等待)
make
sudo make install
不出意外是不会出现问题的,因为我们在下载的时候就已经将一些第三方的依赖项都包含进来了,如有问题可以具体评论或者加入知识星球交流。
windows下安装和使用Open3D教程
(1)首先必要的选择自己对应的Open3D的版本与VS的版本,并不是最新的版本就是适合你的VS版本,如果不是按照官网给定的版本对应的 一定会遇到各种问题:比如使用VS2015在编译Open3D-0.10版本的时候就会遇到以下问题,本人在当时编译的时候是出现了很多错误,其中大部分的错误都是可以慢慢改正确,唯独这个错误是无从下手的,所以还是决定在不重新安装VS的情况下,决定编译Open3D-0.80版本。
![](http://n4.ikafan.com/assetsj/blank.gif)
编译步骤
(1)首先将第三方库的内容补齐,因为我们在下载open3D 0.80的时候3rdparty虽然有文件夹,但是文件夹中是没有内容的
(2)之后直接开启cmake,截图如下,没有仍然错误就可以正常生成VS的工程
![](http://n4.ikafan.com/assetsj/blank.gif)
(3)我们打开VS程序我配置成release模式编译即可,如果出现于python有关的库没有编译成功,没有关系,因为我们使用的C++版本,所以我们直接卸载对应的项目即可,我这个工程时错误了两个错误,我也就卸载了两个项目让其不参与编译即可。
![](http://n4.ikafan.com/assetsj/blank.gif)
所以接下来就给出一个实例,并且我觉得很多人可能 会遇到一些问题,我会将这些编译好的库整理好,去除无关的内容上传到git 或者CSDN供大家下载使用,其中有一个example实例打开直接可编译使用。
git地址:https://github.com/yaoli1992/Open3D-0.8_vs2015-Release-X64
建议如果有问题可以在github 的 issues中提问,
![](http://n4.ikafan.com/assetsj/blank.gif)
本周线上分享预告:线上分享会预告之传统算法的点云配准与激光SLAM