0

ここで見つけたチュートリアルに正確に従って、入力にいくつかの変更を加えました。次に、私のコードは次のとおりです。

#include <common/common.h>
#include <io/pcd_io.h>
#include <features/normal_3d_omp.h>
#include <surface/mls.h>
#include <surface/poisson.h>
#include <pcl/io/vtk_io.h>
using namespace pcl;

int main (int argc, char **argv)
{
    if (argc != 1)
    {
        PCL_ERROR ("Syntax: %s input.pcd output.ply\n", argv[0]);
         return -1;
    }

    PointCloud::Ptr cloud (new PointCloud ());
    io::loadPCDFile ("ism_test_cat.pcd", *cloud);
    MovingLeastSquares mls; mls.setInputCloud (cloud);
    mls.setSearchRadius (0.01);
    mls.setPolynomialFit (true);
    mls.setPolynomialOrder (2);
    mls.setUpsamplingMethod (MovingLeastSquares::SAMPLE_LOCAL_PLANE);
    mls.setUpsamplingRadius (0.005);
    mls.setUpsamplingStepSize (0.003);
    PointCloud::Ptr cloud_smoothed (new PointCloud ());
    mls.process (*cloud_smoothed);
    NormalEstimationOMP ne;
    ne.setNumberOfThreads (8);
    ne.setInputCloud (cloud_smoothed);
    ne.setRadiusSearch (0.01);
    Eigen::Vector4f centroid;
    compute3DCentroid (*cloud_smoothed, centroid);
    ne.setViewPoint (centroid[0], centroid[1], centroid[2]);
    PointCloud::Ptr cloud_normals (new PointCloud ());
    ne.compute (*cloud_normals);

    for (size_t i = 0; i < cloud_normals->size (); ++i)
    {

        cloud_normals->points[i].normal_x *= -1;
        cloud_normals->points[i].normal_y *= -1; cloud_normals->points[i].normal_z *= -1;
    }

    PointCloud::Ptr cloud_smoothed_normals (new PointCloud ());
    concatenateFields (*cloud_smoothed, *cloud_normals, *cloud_smoothed_normals);
    Poisson poisson;
    poisson.setDepth (9);
    poisson.setInputCloud (cloud_smoothed_normals);
    PolygonMesh mesh;
    poisson.reconstruct (mesh);
    io::saveVTKFile ("sreconstruc.vtk",mesh);
    return 0;
}

PCL 1.6、VS2010、すべて x64 を使用しています。

VS2010 はコード内のエラーを検出しないため、コンパイルしました。しかし、私がそれを実行すると、問題があります:

'Unhandled exception at 0x000007fee833546b (pcl_kdtree_debug.dll) in pcl_surface-reconstrucTutorial.exe: 0xC0000005: Access violation reading location 0x0000000000000000.' 

端末にはこれが表示されます[pcl::NormalEstimationOMP::compute] input_ is empty!

コードは「mls.process (*cloud_smoothed);」まで実行されます。ライン。

どうすれば解決できますか?私はそれを解決するために夢中になります。

よろしくお願いします!

4

2 に答える 2

0

@Laszlo-Andras Zsurzsaが言ったように、パラメーターを変更しましたが、今も続いています。しかし今、実行して file.vtk を保存すると、. この設定を使用して、何か良いものを取得します

于 2013-10-17T21:43:37.593 に答える