测试示例:
vs2015+release+x64
#include #include #include #include #include #include #include #include using namespace pcl::console; typedef pcl::PointXYZ Point; void PointCloud2Vector3d (pcl::PointCloud::Ptr cloud, pcl::on_nurbs::vector_vec3d &data); void visualizeCurve (ON_NurbsCurve &curve, ON_NurbsSurface &surface, pcl::visualization::PCLVisualizer &viewer); int main (int argc, char *argv[]) { std::string pcd_file, file_3dm; if (argc < 2) { printf ("\nUsage: pcl_example_nurbs_fitting_surface pcd-in-file -o 3 -rn 4 -in 10 -mr 128 -td 1\n\n"); exit (0); } pcd_file = argv[1]; //file_3dm = argv[2]; pcl::visualization::PCLVisualizer viewer ("B样条曲面拟合点云数据"); viewer.setBackgroundColor(0,0,0); viewer.setSize (800, 600); // ############################################################################ // load point cloud printf (" loading %s\n", pcd_file.c_str ()); pcl::PointCloud::Ptr cloud (new pcl::PointCloud); pcl::PCLPointCloud2 cloud2; pcl::on_nurbs::NurbsDataSurface data; if (pcl::io::loadPCDFile (pcd_file, cloud2) == -1) throw std::runtime_error (" PCD file not found."); fromPCLPointCloud2 (cloud2, *cloud); PointCloud2Vector3d (cloud, data.interior); pcl::visualization::PointCloudColorHandlerCustom handler (cloud, 0, 255, 0); viewer.addPointCloud (cloud, handler, "cloud_cylinder"); printf (" %lu points in data set\n", cloud->size ()); // ############################################################################ // fit B-spline surface // parameters unsigned order (3); unsigned refinement (4); unsigned iterations (10); unsigned mesh_resolution (128); bool two_dim=true; parse_argument (argc, argv, "-o", order); parse_argument (argc, argv, "-rn", refinement); parse_argument (argc, argv, "-in", iterations); parse_argument (argc, argv, "-mr", mesh_resolution); parse_argument (argc, argv, "-td", two_dim); pcl::on_nurbs::FittingSurface::Parameter params; params.interior_smoothness = 0.2; params.interior_weight = 1.0; params.boundary_smoothness = 0.2; params.boundary_weight = 0.0; // initialize printf (" surface fitting ...\n"); ON_NurbsSurface nurbs = pcl::on_nurbs::FittingSurface::initNurbsPCABoundingBox (order, &data); pcl::on_nurbs::FittingSurface fit (&data, nurbs); // fit.setQuiet (false); // enable/disable debug output // mesh for visualization pcl::PolygonMesh mesh; pcl::PointCloud::Ptr mesh_cloud (new pcl::PointCloud); std::vector mesh_vertices; std::string mesh_id = "mesh_nurbs"; pcl::on_nurbs::Triangulation::convertSurface2PolygonMesh (fit.m_nurbs, mesh, mesh_resolution); viewer.addPolygonMesh (mesh, mesh_id); std::cout
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?