赞
踩
1、本文内容
Open3D在0.15版之后,提供编译好的包,本文是以最新版(截止202402,0.18.0)为例的Open3D在Windows下的使用教程;
Open3D其他版本的编译和使用相关教程:
各个版本的Open3D、PCL的编译、使用教程
2、平台/环境
windows10, visual studio 2019+;
通过cmake构建项目;
3、转载请注明出处:
https://blog.csdn.net/qq_41102371/article/details/136216165
下列两种方式均可
下载官方编译好的Open3D包:
https://github.com/isl-org/Open3D/releases/tag/v0.18.0
下载release版本,带-dbg的是debug版本,另外注意,官方编译好的包都是动态库的,如果需要静态库的版本,仍需要自己通过源码编译,可以参考上方其他版本编译教程
解压放至指定位置,这里解压后进行了重命名,最后路径路径为D:\carlos\install\open3d180_dll
下载Open3D 0.18.0源码https://github.com/isl-org/Open3D/releases/tag/v0.18.0
解压,并在同级目录下添加编译脚本compile_release.bat,这里都放在了Open3D180
compile_release.bat内容如下
cmake -DCMAKE_INSTALL_PREFIX="D:/carlos/install/open3d180" ^
-DBUILD_PYTHON_MODULE=OFF -DBUILD_WEBRTC=OFF -DBUILD_EXAMPLES=OFF ^
-S ./Open3D-0.18.0 -B ./build
cmake --build ./build --config Release --parallel 8
cmake --build ./build --config Release --target install
其中DCMAKE_INSTALL_PREFIX是自定义安装路径,这里是"D:/carlos/install/open3d180"
cd Open3D180
./compile_release.bat
在编译过程中,会自动从github上下载第三方的库,因为国内网络原因,有的时候下载不下来就会报错,解决方法就是找到dst和src,例如下方就是下载ispc-v1.16.1-windows.zip失败,找到源文件地址(红框),自己去手动下载后放在给出的dst路径(黄框)就行,然后继续执行compile_release.bat并去下载再次下载失败的包,直到所有的包都有完整下载
如果出现错误
error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MD_DynamicRelease”不匹配值“MT_StaticRelease”
参考windows/linux/mac上编译open3d 0.17.0
编译好之后,就会在上面指定的D:/carlos/install/open3d180路径进行安装
创建一个文件夹open3d_demo,从https://github.com/isl-org/open3d-cmake-find-package下载官方demo(见(open3d 0.13的c++版本使用demo),
添加编译脚本compile_180.bat,文件结构如下
其中compile_180.bat内容为:
rem By carlos_lee 202402
cmake -DOpen3D_DIR="D:/carlos/install/open3d180_dll/CMake" ^
-DCMAKE_INSTALL_PREFIX="D:/carlos/install/open3d180_dll" -S ./open3d-cmake-find-package . -B ./build
cmake --build ./build --config Release --target ALL_BUILD
打开命令行,运行compile_180.bat
编译成功后会生成Draw.exe
.\build\Release\Draw.exe
关于动态库和静态库:
简单说动态库是运行时加载的,在windows中为xxx.dll(Open3D.dll)文件,同时有对应的xxx.lib;而静态库是在编译时就链接的,也就是如果Open3D编译成静态库之后,会仅生成一个Open3D.lib,在编译的时候,就会把Open3D.lib链接到当前程序,不需要在运行时加载其他东西,可以看看这篇文章https://www.itgh.cn/post/ddhde2b4.html;
在open3d-cmake-find-package/CMakeLists.txt中,最后这段脚本
# On Windows if BUILD_SHARED_LIBS is enabled, copy .dll files to the executable directory
if(WIN32)
get_target_property(open3d_type Open3D::Open3D TYPE)
if(open3d_type STREQUAL "SHARED_LIBRARY")
message(STATUS "Copying Open3D.dll to ${CMAKE_CURRENT_BINARY_DIR}/$<CONFIG>")
add_custom_command(TARGET Draw POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy
${CMAKE_INSTALL_PREFIX}/bin/Open3D.dll
${CMAKE_CURRENT_BINARY_DIR}/$<CONFIG>)
endif()
endif()
会自动把open3d180_dll/bin/Open3D.dll复制到Draw.exe同级目录下
如果运行没反应或过程中提示找不到Open3D.dll,请检查Draw.exe同级目录下是否有Open3D.dll,并检查上述步骤是否正确,或者手动将open3d180_dll/bin/Open3D.dll复制到Draw.exe的同级目录下
文中已列出
主要做激光/影像三维重建,配准、分割等常用点云算法,熟悉open3d、pcl等开源点云库,技术交流、咨询可私信
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。