Végzetes hiba PCL ICP

szavazat
0

Új vagyok a PCL (Point Cloud Library), és csak azt kell alkalmazni ICP a két pontot. Az online Kódminta ICP azonban dob egy végzetes hibát, amikor megpróbálja futtatni a Visual Studio 2010 64 bit. Próbáltam különböző módon lehet kialakítani pontfelhőt de nem szerencse. Végzetes hiba történik belül icp.setInputTarget, a vonaltarget_ = target.makeShared ();

Ez hogyan létrehozni mind az én felhő pont

pcl::PointCloud<pcl::PointXYZ>::Ptr cloud_in (new pcl::PointCloud<pcl::PointXYZ>);
cloud_in->width    = _head_width+1;
cloud_in->height   = _head_height+1;
cloud_in->is_dense = true;
for(int x=0; x<=width; x++) {
        for(int y=0; y<=height; y++)    {
            float z = depths[x][y];
            pcl::PointXYZ curr_point;
            curr_point.x = x;
            curr_point.y = y;
            curr_point.z = z;
            cloud_in->points.push_back(curr_point);
        }
    }

És ez az, ahol hiba lép fel

pcl::IterativeClosestPoint<pcl::PointXYZ, pcl::PointXYZ> icp;
icp_dummy.setInputCloud(cloud_in);
icp_dummy.setInputTarget(cloud_out); /* This throws a fatal error */

Minden segítséget Belátható

A kérdést 21/08/2012 01:27
a forrás felhasználó
Más nyelveken...                            


1 válasz

szavazat
1

Van egy pár kérdést, ami nem közvetlenül a szemem: -A quadok gumiköpenyein térkép nem megfelelő, az értékek az x, y nem valós koordinátákat

pcl::PointCloud<pcl::PointXYZ>::Ptr cloud (new pcl::PointCloud<pcl::PointXYZ>);
cloud->points.reserve(depthmap.rows*depthmap.cols);//for speeding up code, whitout it cost more time

cloud->is_dense = true;
//Don't know how it'd defined but try something like this by the depthmap
for(int x=0; x<depthmap.rows; x++) {
        for(int y=0; y<depthmap.cols; y++)    {
            float z = depths[x][y];
            pcl::PointXYZ curr_point;
            curr_point.x = (x - cx) * z / fx; //for speedup calculate inverse of fx and multiply this 
            curr_point.y = (y - cy) * z / fy;//for speedup calculate inverse of fy and multiply this 
            curr_point.z = z;
            cloud->points.push_back(curr_point);
        }
    }

- Szintén felgyorsításának dolog használatára PTR (smart pointerek)

pcl::PointCloud<pcl::PointXYZ>::Ptr cloud_out;

pcl::IterativeClosestPoint<pcl::PointXYZ, pcl::PointXYZ> icp; //hereyou have to define icp

icp.setInputCloud(cloud_in);//so here icp_dummy needs to be icp

icp.setInputTarget(cloud_out); //so here icp_dummy needs to be icp

// The fatal error must be gone, otherwise change cloud_in to same type
// as cloud_out
Válaszolt 28/09/2015 08:40
a forrás felhasználó

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more