点云技术相关产学研社区

 找回密码
 立即注册加入PCL中国点云技术相关产学研社区

扫一扫,访问微社区

查看: 6011|回复: 6

marching cube surface reconstruct,缺少 marchingcubesGreedy.h

[复制链接]
发表于 2014-3-4 00:34:56 | 显示全部楼层 |阅读模式
求助!!
在用marchingcube重建三维表面时,需要marchingcubegreedy.h ,我是1.6的版本,没有这个.h文件,去官网也下不了1.5的版本,想请知道在哪儿可以下载的好心人给我一个链接,或者请用1.5版本的好心人把这个.h文件发到我邮箱,1573524657@qq.com.
好人好报,十分感谢!
回复

使用道具 举报

发表于 2014-3-4 04:04:56 | 显示全部楼层
https://github.com/PointCloudLibrary/pcl
这里是最新的代码更新。你可以下载试一试。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-3-4 10:12:48 | 显示全部楼层
guohaolys 发表于 2014-3-4 04:04
https://github.com/PointCloudLibrary/pcl
这里是最新的代码更新。你可以下载试一试。 ...

非常感谢,按你说的找到了.h文件的代码,之前也进去看过,怪自己没仔细看,谢谢了!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-3-4 17:25:07 | 显示全部楼层
guohaolys 发表于 2014-3-4 04:04
https://github.com/PointCloudLibrary/pcl
这里是最新的代码更新。你可以下载试一试。 ...


代码遇到问题,在reconsturct的时候,请高手帮忙看看是什么原因
#include "stdafx.h"
#include <iostream>
#include <pcl/io/pcd_io.h>
#include <pcl/point_types.h>
#include <pcl/surface/marching_cubes.h>
#include <pcl/surface/marching_cubes_greedy.h>
#include <pcl/surface/marching_cubes_hoppe.h>
#include <pcl/surface/marching_cubes_rbf.h>
#include <pcl/features/normal_3d.h>
#include <pcl/features/integral_image_normal.h>
#include <pcl/kdtree/kdtree.h>
#include <pcl/kdtree/kdtree_flann.h>
#include <pcl/visualization/pcl_visualizer.h>
#include <boost/thread/thread.hpp>

using namespace std;

int
main (int argc, char** argv)
{
  pcl::PointCloud<pcl::PointXYZ>::Ptr cloud (new pcl::PointCloud<pcl::PointXYZ>);

  if (pcl::io::loadPCDFile<pcl::PointXYZ> ("table_scene_lms400_downsampled.pcd", *cloud) == -1) //* load the file
  {
    PCL_ERROR ("Couldn't read file test_pcd.pcd \n");
    return (-1);
  }

  std::cout<<"PCD load done!"<<endl;
  std::cout<<"pcd size is"<<cloud->size()<<endl;

               double leafSize = 0.01;
               int isoLevel =0.5;//iso: must be between 0 and 1.0

               // Normal estimation*
               pcl::search::Search<pcl::PointXYZ>::Ptr tree = boost::shared_ptr<pcl::search::Search<pcl::PointXYZ> > (new pcl::search::KdTree<pcl::PointXYZ>);
               tree->setInputCloud(cloud);

               pcl::NormalEstimation<pcl::PointXYZ, pcl::Normal> n;
               n.setInputCloud(cloud);
               n.setSearchMethod(tree);
               n.setKSearch(20);

               pcl::PointCloud<pcl::Normal>::Ptr normals(new pcl::PointCloud<pcl::Normal>);
               n.compute(*normals);
               //* normals should not contain the point normals + surface curvatures

               // Concatenate the XYZ and normal fields*
               pcl::PointCloud<pcl::PointNormal>::Ptr cloud_with_normals(new pcl::PointCloud<pcl::PointNormal>);
               concatenateFields(*cloud, *normals, *cloud_with_normals);
               //* cloud_with_normals = cloud + normals

               // Create search tree*
              pcl::search::KdTree<pcl::PointNormal>::Ptr tree2 (new pcl::search::KdTree<pcl::PointNormal>);
               tree2->setInputCloud(cloud_with_normals);

               // Init objects
               pcl::PolygonMesh mesh;
              // pcl::MarchingCubesGreedy<pcl::PointNormal> mc;
                           pcl::MarchingCubesHoppe<pcl::PointNormal> mc;       
               // Set parameters
               mc.setInputCloud(cloud_with_normals);
               mc.setSearchMethod(tree2);
              // mc.setLeafSize(leafSize);
                           mc.setPercentageExtendGrid(leafSize);//体素大小
               mc.setIsoLevel(isoLevel);//
              
                           // Reconstruct
                           mc.reconstruct(mesh);
                                   boost::shared_ptr<pcl::visualization::PCLVisualizer> viewer (new pcl::visualization::PCLVisualizer ("3D Viewer"));
                                viewer->addPolygonMesh(mesh,"MC");
                                viewer->setBackgroundColor (0, 0, 0);
                                viewer->addCoordinateSystem (1.0);
                                viewer->initCameraParameters ();
                                // 主循环
                                std::cerr<<"----------------finish--------------------"<<endl;
                                while (!viewer->wasStopped ())
                                {
                                        viewer->spinOnce (100);
                                        boost::this_thread::sleep (boost::posix_time::microseconds (100000));
                                }
                                // Finish
                           return (0);
}
回复 支持 反对

使用道具 举报

发表于 2014-3-7 00:23:21 | 显示全部楼层
susan 发表于 2014-3-4 17:25
代码遇到问题,在reconsturct的时候,请高手帮忙看看是什么原因
#include "stdafx.h"
#include

错误提示是什么呢,这样让我看代码也太残忍了,哈哈。
回复 支持 反对

使用道具 举报

发表于 2014-3-13 15:47:03 | 显示全部楼层
本帖最后由 papillondog 于 2014-3-13 15:52 编辑
susan 发表于 2014-3-4 17:25
代码遇到问题,在reconsturct的时候,请高手帮忙看看是什么原因
#include "stdafx.h"
#include

代码是1.7.1的pcl版本吗?说实话marching_cubes我只用1.5.1的版本运行通过过,但模型的效果并不是很好,1.6以后的代码身有些问题比如memcpy (&msg.data[0], &cloud.points[0], data_size);//cloud.points = [0]()
当msg没有元素时msg.data[0]会出现数组越界,根本没有data[0]的空间。还有一些问题是eigen的矩阵无法承载过大的矩阵数据报错,我现在暂时放弃pcl的marching_cubes、marchingcube_rbf和marchingcube_hoppe类了。pcl在支持大数据量方面还是有待改进,这也算一个难点。一面之词,如有错误多多指教!
回复 支持 反对

使用道具 举报

发表于 2016-4-30 10:52:55 | 显示全部楼层
susan 发表于 2014-3-4 17:25
代码遇到问题,在reconsturct的时候,请高手帮忙看看是什么原因
#include "stdafx.h"
#include

您好,不知道您的问题解决了么?我在用的时候也出现了问题,就是执行到reconstruction的时候没有反应,感觉像是退出了,下一条语句也没有执行,您知道是什么原因么?
回复 支持 反对

使用道具 举报

本版积分规则

QQ|小黑屋|点云技术相关产学研社区 ( 陕ICP备13001629号 )

GMT+8, 2024-5-15 07:21 , Processed in 1.148165 second(s), 17 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表