Open3D 第一个工程 求点云法向量

编译好Open3D,就用cmake配置了个工程,测试下效果,c++版本的接口和python接口基本一致,使用上很方便,编译和运行速度相对比较快

1.创建CMakeLists.txt文件

cmake_minimum_required(VERSION 3.18)
project(Open3DCMakeFindPackage LANGUAGES C CXX)
# Find installed Open3D, which exports Open3D::Open3D
find_package(Open3D REQUIRED)
add_executable(Draw)
target_sources(Draw PRIVATE Draw.cpp)
target_link_libraries(Draw PRIVATE Open3D::Open3D)

2.Draw.cpp

点云数据较不稳定,采用较大搜索半径来计算法向量,提高准确性

#include <chrono>
#include <cstdio>
#include <memory>
#include <open3d/geometry/KDTreeSearchParam.h>
#include <open3d/io/PointCloudIO.h>
#include <open3d/visualization/rendering/Open3DScene.h>
#include <string>
#include <memory.h>
#include "open3d/Open3D.h"

int main(int argc, char *argv[]) {
   
   auto cloud = std::make_shared<open3d::geometry::PointCloud>();
   open3d::io::ReadPointCloudOption rdo;
   open3d::io::ReadPointCloudFromPCD("./cloud/0913--005/001_0005-00004.pcd", *cloud, rdo);
   auto st = std::chrono::steady_clock::now();

   auto downpcd =  cloud->VoxelDownSample(30);
//    printf("down size: %d \n", )

   downpcd->EstimateNormals(open3d::geometry::KDTreeSearchParamRadius(200),true);
   std::chrono::duration<double> tm =  (std::chrono::steady_clock::now()-st) ;
   printf("time is :%f ms\n",tm.count()*1000.0);
   cloud->PaintUniformColor({0.0, 1.0, 0.0});
   open3d::visualization::DrawGeometries({cloud},"source cloud",640,480,50,50,false,false,false );
   open3d::visualization::DrawGeometries({downpcd},"Open3D normal estimatio",640,480,50,50,true,false,false );
   return 0;
}

结果:time is :76.279722 ms
在这里插入图片描述
参考:

  1. https://blog.csdn.net/qq_39629280/article/details/120223422 link
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值