Open3D0.18.0版本较新,在网上参考资料编译,踩了不少雷,这里记录一下,结尾放上编译好的库
环境
VS2022+Open3D_0.18.0
准备
cmake >=3.20
python >=3.6
源码编译
-
解压后在目录下创建build和install目录
-
打开cmake_gui,建议使用较新的cmake我这里用的是cmake3.29.2
-
设置源码路径和build路径,build路径就是第2步创建的build文件夹的路径
-
点击Configure
6.选择生成器,这个你电脑有哪个版本就选哪个就行,我这里是VS2022,其实用VS2019也是可以的,其它地方不需要修改,然后点击finish即可
-
如果网络条件不好的话,可能需要的时间比较长
-
将CMAKE_INSTALL_PREFIX值改为前面创建的install路径
-
点击Generate
-
结束之后点击OpenProject,就会将项目在VS中打开
-
这里看你要编译Debug版本的Open3D还是release版本进行选择
-
我这里选的是Debug版本,右键单击ALL_BUILD项目点击生成
-
这里也要看网络环境,可能会很慢,生成结束之后,在ALL_BUILD项目下面会生成一个INSTALL项目,同样右键单击INSTALL项目,然后点击生成。
13.然后在install目录下会看到最后编译好的Open3D库,目录下应该是这样,但是据说不同Open3D库的编译结果有较大差异,我这里是将install里面生成的内容单独放到另一个文件夹里面了,但不单独都可以。
Open3D_34">VS配置Open3D环境
- 打开属性管理器,在项目对应的Debug/Release模式下添加一个属性表
- 包含目录
- 库目录
- 链接器->输入->附加依赖项
Open3D.lib
OpenGL32.lib
Open3D_3rdparty_assimp.lib
Open3D_3rdparty_blas_mkl_core.lib
Open3D_3rdparty_blas_mkl_intel_ilp64.lib
Open3D_3rdparty_blas_mkl_sequential.lib
Open3D_3rdparty_blas_mkl_tbb_thread.lib
Open3D_3rdparty_blas_tbb_static.lib
Open3D_3rdparty_civetweb_civetweb-cpp.lib
Open3D_3rdparty_civetweb_civetweb.lib
Open3D_3rdparty_curl.lib
Open3D_3rdparty_embree_embree3.lib
Open3D_3rdparty_embree_embree_avx.lib
Open3D_3rdparty_embree_embree_avx2.lib
Open3D_3rdparty_embree_lexers.lib
Open3D_3rdparty_embree_math.lib
Open3D_3rdparty_embree_simd.lib
Open3D_3rdparty_embree_sys.lib
Open3D_3rdparty_embree_tasking.lib
Open3D_3rdparty_filament_backend.lib
Open3D_3rdparty_filament_bluegl.lib
Open3D_3rdparty_filament_bluevk.lib
Open3D_3rdparty_filament_filabridge.lib
Open3D_3rdparty_filament_filaflat.lib
Open3D_3rdparty_filament_filamat_lite.lib
Open3D_3rdparty_filament_filament.lib
Open3D_3rdparty_filament_filameshio.lib
Open3D_3rdparty_filament_geometry.lib
Open3D_3rdparty_filament_ibl.lib
Open3D_3rdparty_filament_image.lib
Open3D_3rdparty_filament_meshoptimizer.lib
Open3D_3rdparty_filament_smol-v.lib
Open3D_3rdparty_filament_utils.lib
Open3D_3rdparty_fmt.lib
Open3D_3rdparty_glew.lib
Open3D_3rdparty_glfw.lib
Open3D_3rdparty_imgui.lib
Open3D_3rdparty_ippicv_ippicvmt.lib
Open3D_3rdparty_ippicv_ippiw.lib
Open3D_3rdparty_jpeg.lib
Open3D_3rdparty_jsoncpp.lib
Open3D_3rdparty_liblzf.lib
Open3D_3rdparty_png.lib
Open3D_3rdparty_qhullcpp.lib
Open3D_3rdparty_qhull_r.lib
Open3D_3rdparty_rply.lib
Open3D_3rdparty_tbb_tbbmalloc_static.lib
Open3D_3rdparty_tbb_tbb_static.lib
Open3D_3rdparty_tinyfiledialogs.lib
Open3D_3rdparty_uvatlas.lib
Open3D_3rdparty_vtk_vtkCommonCore-9.1d.lib
Open3D_3rdparty_vtk_vtkCommonDataModel-9.1d.lib
Open3D_3rdparty_vtk_vtkCommonExecutionModel-9.1d.lib
Open3D_3rdparty_vtk_vtkCommonMath-9.1d.lib
Open3D_3rdparty_vtk_vtkCommonMisc-9.1d.lib
Open3D_3rdparty_vtk_vtkCommonSystem-9.1d.lib
Open3D_3rdparty_vtk_vtkCommonTransforms-9.1d.lib
Open3D_3rdparty_vtk_vtkFiltersCore-9.1d.lib
Open3D_3rdparty_vtk_vtkFiltersGeneral-9.1d.lib
Open3D_3rdparty_vtk_vtkFiltersModeling-9.1d.lib
Open3D_3rdparty_vtk_vtkFiltersSources-9.1d.lib
Open3D_3rdparty_vtk_vtkkissfft-9.1d.lib
Open3D_3rdparty_vtk_vtkpugixml-9.1d.lib
Open3D_3rdparty_vtk_vtksys-9.1d.lib
Open3D_3rdparty_webrtc_webrtc.lib
Open3D_3rdparty_webrtc_webrtc_extra.lib
Open3D_3rdparty_zeromq.lib
Open3D_3rdparty_zlib.lib
这里面是编译好的Open3D库路径下的lib文件夹下所有文件的文件名,注意还需要添加OpenGL32.lib
- c/c+±>代码生成->运行库,这里如果是Release版本就选MT,我这里是Debug版本选MTd
测试结果
测试代码
#include <iostream>
#include <random>
#include <Open3D/Open3D.h>using namespace std;int main(int argc, char* argv[])
{// -------------------------生成点云-----------------------------auto noise_cloud = std::make_shared<open3d::geometry::PointCloud>();int N = 10000;noise_cloud->points_.resize(N);std::normal_distribution<> norm{ 0, 0.002 };std::random_device rd;std::default_random_engine rng{ rd() };for (size_t i = 0; i < N; ++i){noise_cloud->points_[i][0] = norm(rng);noise_cloud->points_[i][1] = norm(rng);noise_cloud->points_[i][2] = norm(rng);}open3d::io::WritePointCloudToPCD("Gaiss_noise.pcd", *noise_cloud, false);open3d::visualization::DrawGeometries({ noise_cloud }, "PointCloud", 1600, 900);return 0;
}
结果
参考文章
Win10系统下VisualStudio2019 配置Open3D-0.13.0
windows10编译open3d 0.13
open3d-0.10.0 + visual studio 2019 + windows