本文整理汇总了C++中PCLVisualizer::wasStopped方法的典型用法代码示例。如果您正苦于以下问题:C++ PCLVisualizer::wasStopped方法的具体用法?C++ PCLVisualizer::wasStopped怎么用?C++ PCLVisualizer::wasStopped使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类PCLVisualizer
的用法示例。
在下文中一共展示了PCLVisualizer::wasStopped方法的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: objrec
void
run (float pair_width, float voxel_size, float max_coplanarity_angle, int num_hypotheses_to_show)
{
PointCloud<PointXYZ>::Ptr scene_points (new PointCloud<PointXYZ> ()), model_points (new PointCloud<PointXYZ> ());
PointCloud<Normal>::Ptr scene_normals (new PointCloud<Normal> ()), model_normals (new PointCloud<Normal> ());
// Get the points and normals from the scene
if ( !vtk_to_pointcloud ("../../test/tum_table_scene.vtk", *scene_points, *scene_normals) )
return;
vtkPolyData *vtk_model = vtkPolyData::New ();
// Get the points and normals from the scene
if ( !vtk_to_pointcloud ("../../test/tum_amicelli_box.vtk", *model_points, *model_normals, vtk_model) )
return;
// The recognition object
ObjRecRANSAC objrec (pair_width, voxel_size);
objrec.setMaxCoplanarityAngleDegrees (max_coplanarity_angle);
objrec.addModel (*model_points, *model_normals, "amicelli", vtk_model);
// Switch to the test mode in which only oriented point pairs from the scene are sampled
objrec.enterTestModeTestHypotheses ();
// The visualizer
PCLVisualizer viz;
CallbackParameters params(objrec, viz, *scene_points, *scene_normals, num_hypotheses_to_show);
viz.registerKeyboardCallback (keyboardCB, static_cast<void*> (¶ms));
// Run the recognition and update the viewer
update (¶ms);
#ifdef _SHOW_SCENE_POINTS_
viz.addPointCloud (scene_points, "cloud in");
viz.setPointCloudRenderingProperties (pcl::visualization::PCL_VISUALIZER_POINT_SIZE, 2, "cloud in");
#endif
#ifdef _SHOW_OCTREE_POINTS_
PointCloud<PointXYZ>::Ptr octree_points (new PointCloud<PointXYZ> ());
objrec.getSceneOctree ().getFullLeavesPoints (*octree_points);
viz.addPointCloud (octree_points, "octree points");
viz.setPointCloudRenderingProperties (pcl::visualization::PCL_VISUALIZER_POINT_SIZE, 5, "octree points");
viz.setPointCloudRenderingProperties (pcl::visualization::PCL_VISUALIZER_COLOR, 1.0, 0.0, 0.0, "octree points");
#endif
#if defined _SHOW_OCTREE_NORMALS_ && defined _SHOW_OCTREE_POINTS_
PointCloud<Normal>::Ptr octree_normals (new PointCloud<Normal> ());
objrec.getSceneOctree ().getNormalsOfFullLeaves (*octree_normals);
viz.addPointCloudNormals<PointXYZ,Normal> (octree_points, octree_normals, 1, 6.0f, "normals out");
#endif
// Enter the main loop
while (!viz.wasStopped ())
{
//main loop of the visualizer
viz.spinOnce (100);
boost::this_thread::sleep (boost::posix_time::microseconds (100000));
}
vtk_model->Delete ();
}
示例2: main
int main()
{
PolygonMesh human_1_mesh;
loadPolygonFilePLY("../data/human_1.ply", human_1_mesh);
PCLVisualizer* viewer = new PCLVisualizer("Mesh viewer");
viewer->addPolygonMesh(human_1_mesh);
while (!viewer->wasStopped()) { viewer->spinOnce(100); }
viewer->close();
delete viewer;
}
示例3: run
void run (const char* file_name, float voxel_size)
{
PointCloud<PointXYZ>::Ptr points_in (new PointCloud<PointXYZ> ());
PointCloud<PointXYZ>::Ptr points_out (new PointCloud<PointXYZ> ());
// Get the points and normals from the input vtk file
if ( !vtk_to_pointcloud (file_name, *points_in) )
return;
// Build the octree with the desired resolution
ORROctree octree;
octree.build (*points_in, voxel_size);
// Now build the octree z-projection
ORROctreeZProjection zproj;
zproj.build (octree, 0.15f*voxel_size, 0.15f*voxel_size);
// The visualizer
PCLVisualizer viz;
show_octree(&octree, viz);
show_octree_zproj(&zproj, viz);
#ifdef _SHOW_POINTS_
// Get the point of every full octree leaf
octree.getFullLeafPoints (*points_out);
// Add the point clouds
viz.addPointCloud (points_in, "cloud in");
viz.addPointCloud (points_out, "cloud out");
// Change the appearance
viz.setPointCloudRenderingProperties (pcl::visualization::PCL_VISUALIZER_POINT_SIZE, 2, "cloud in");
viz.setPointCloudRenderingProperties (pcl::visualization::PCL_VISUALIZER_POINT_SIZE, 5, "cloud out");
viz.setPointCloudRenderingProperties (pcl::visualization::PCL_VISUALIZER_COLOR, 1.0, 0.0, 0.0, "cloud out");
#endif
// Enter the main loop
while (!viz.wasStopped ())
{
//main loop of the visualizer
viz.spinOnce (100);
boost::this_thread::sleep (boost::posix_time::microseconds (100000));
}
}
示例4: sprintf
void
visualize (const ModelLibrary::HashTable& hash_table)
{
PCLVisualizer vis;
vis.setBackgroundColor (0.1, 0.1, 0.1);
const ModelLibrary::HashTableCell* cells = hash_table.getVoxels ();
size_t max_num_entries = 0;
int i, id3[3], num_cells = hash_table.getNumberOfVoxels ();
float half_side, b[6], cell_center[3], spacing = hash_table.getVoxelSpacing ()[0];
char cube_id[128];
// Just get the maximal number of entries in the cells
for ( i = 0 ; i < num_cells ; ++i, ++cells )
{
if (cells->size ()) // That's the number of models in the cell (it's maximum one, since we loaded only one model)
{
size_t num_entries = (*cells->begin ()).second.size(); // That's the number of entries in the current cell for the model we loaded
// Get the max number of entries
if ( num_entries > max_num_entries )
max_num_entries = num_entries;
}
}
// Now, that we have the max. number of entries, we can compute the
// right scale factor for the spheres
float s = (0.5f*spacing)/static_cast<float> (max_num_entries);
cout << "s = " << s << ", max_num_entries = " << max_num_entries << endl;
// Now, render a sphere with the right radius at the right place
for ( i = 0, cells = hash_table.getVoxels () ; i < num_cells ; ++i, ++cells )
{
// Does the cell have any entries?
if (cells->size ())
{
hash_table.compute3dId (i, id3);
hash_table.computeVoxelCenter (id3, cell_center);
// That's half of the cube's side length
half_side = s*static_cast<float> ((*cells->begin ()).second.size ());
// Adjust the bounds of the cube
b[0] = cell_center[0] - half_side; b[1] = cell_center[0] + half_side;
b[2] = cell_center[1] - half_side; b[3] = cell_center[1] + half_side;
b[4] = cell_center[2] - half_side; b[5] = cell_center[2] + half_side;
// Set the id
sprintf (cube_id, "cube %i", i);
// Add to the visualizer
vis.addCube (b[0], b[1], b[2], b[3], b[4], b[5], 1.0, 1.0, 0.0, cube_id);
}
}
vis.addCoordinateSystem(1.5, "global");
vis.resetCamera ();
// Enter the main loop
while (!vis.wasStopped ())
{
vis.spinOnce (100);
boost::this_thread::sleep (boost::posix_time::microseconds (100000));
}
}
示例5: objrec
void
run (float pair_width, float voxel_size, float max_coplanarity_angle)
{
// The object recognizer
ObjRecRANSAC objrec (pair_width, voxel_size);
objrec.setMaxCoplanarityAngleDegrees (max_coplanarity_angle);
// The models to be loaded
list<string> model_names;
model_names.emplace_back("tum_amicelli_box");
model_names.emplace_back("tum_rusk_box");
model_names.emplace_back("tum_soda_bottle");
list<PointCloud<PointXYZ>::Ptr> model_points_list;
list<PointCloud<Normal>::Ptr> model_normals_list;
list<vtkSmartPointer<vtkPolyData> > vtk_models_list;
// Load the models and add them to the recognizer
for (const auto &model_name : model_names)
{
PointCloud<PointXYZ>::Ptr model_points (new PointCloud<PointXYZ> ());
model_points_list.push_back (model_points);
PointCloud<Normal>::Ptr model_normals (new PointCloud<Normal> ());
model_normals_list.push_back (model_normals);
vtkSmartPointer<vtkPolyData> vtk_model = vtkSmartPointer<vtkPolyData>::New ();
vtk_models_list.push_back (vtk_model);
// Compose the file
string file_name = string("../../test/") + model_name + string (".vtk");
// Get the points and normals from the input model
if ( !vtk2PointCloud (file_name.c_str (), *model_points, *model_normals, vtk_model) )
continue;
// Add the model
objrec.addModel (*model_points, *model_normals, model_name, vtk_model);
}
// The scene in which the models are supposed to be recognized
PointCloud<PointXYZ>::Ptr non_plane_points (new PointCloud<PointXYZ> ()), plane_points (new PointCloud<PointXYZ> ());
PointCloud<Normal>::Ptr non_plane_normals (new PointCloud<Normal> ());
// Detect the largest plane in the dataset
if ( !loadScene ("../../test/tum_table_scene.vtk", *non_plane_points, *non_plane_normals, *plane_points) )
return;
// The parameters for the callback function and the visualizer
PCLVisualizer viz;
CallbackParameters params(objrec, viz, *non_plane_points, *non_plane_normals);
viz.registerKeyboardCallback (keyboardCB, static_cast<void*> (¶ms));
// Run the recognition and update the viewer. Have a look at this method, to see how to start the recognition and use the result!
update (¶ms);
// From this line on: visualization stuff only!
#ifdef _SHOW_OCTREE_
show_octree(objrec.getSceneOctree (), viz);
#endif
#ifdef _SHOW_SCENE_POINTS_
viz.addPointCloud (scene_points, "scene points");
viz.setPointCloudRenderingProperties (pcl::visualization::PCL_VISUALIZER_POINT_SIZE, 2, "scene points");
#endif
#ifdef _SHOW_OCTREE_POINTS_
PointCloud<PointXYZ>::Ptr octree_points (new PointCloud<PointXYZ> ());
objrec.getSceneOctree ().getFullLeavesPoints (*octree_points);
viz.addPointCloud (octree_points, "octree points");
// viz.setPointCloudRenderingProperties (pcl::visualization::PCL_VISUALIZER_POINT_SIZE, 1, "octree points");
viz.setPointCloudRenderingProperties (pcl::visualization::PCL_VISUALIZER_COLOR, 1.0, 0.0, 0.0, "octree points");
viz.addPointCloud (plane_points, "plane points");
viz.setPointCloudRenderingProperties (pcl::visualization::PCL_VISUALIZER_COLOR, 0.9, 0.9, 0.9, "plane points");
#endif
#if defined _SHOW_OCTREE_NORMALS_ && defined _SHOW_OCTREE_POINTS_
PointCloud<Normal>::Ptr normals_octree (new PointCloud<Normal> ());
objrec.getSceneOctree ().getNormalsOfFullLeaves (*normals_octree);
viz.addPointCloudNormals<PointXYZ,Normal> (points_octree, normals_octree, 1, 6.0f, "normals out");
#endif
// Enter the main loop
while (!viz.wasStopped ())
{
//main loop of the visualizer
viz.spinOnce (100);
boost::this_thread::sleep (boost::posix_time::microseconds (100000));
}
}
示例6: run
void run (const char* file_name, float voxel_size)
{
PointCloud<PointXYZ>::Ptr points_in (new PointCloud<PointXYZ> ());
PointCloud<PointXYZ>::Ptr points_out (new PointCloud<PointXYZ> ());
PointCloud<Normal>::Ptr normals_in (new PointCloud<Normal> ());
PointCloud<Normal>::Ptr normals_out (new PointCloud<Normal> ());
// Get the points and normals from the input vtk file
#ifdef _SHOW_OCTREE_NORMALS_
if ( !vtk_to_pointcloud (file_name, *points_in, &(*normals_in)) )
return;
#else
if ( !vtk_to_pointcloud (file_name, *points_in, NULL) )
return;
#endif
// Build the octree with the desired resolution
ORROctree octree;
if ( normals_in->size () )
octree.build (*points_in, voxel_size, &*normals_in);
else
octree.build (*points_in, voxel_size);
// Get the first full leaf in the octree (arbitrary order)
std::vector<ORROctree::Node*>::iterator leaf = octree.getFullLeaves ().begin ();
// Get the average points in every full octree leaf
octree.getFullLeavesPoints (*points_out);
// Get the average normal at the points in each leaf
if ( normals_in->size () )
octree.getNormalsOfFullLeaves (*normals_out);
// The visualizer
PCLVisualizer viz;
// Register a keyboard callback
CallbackParameters params(octree, viz, leaf);
viz.registerKeyboardCallback (keyboardCB, static_cast<void*> (¶ms));
// Add the point clouds
viz.addPointCloud (points_in, "cloud in");
viz.addPointCloud (points_out, "cloud out");
if ( normals_in->size () )
viz.addPointCloudNormals<PointXYZ,Normal> (points_out, normals_out, 1, 6.0f, "normals out");
// Change the appearance
viz.setPointCloudRenderingProperties (pcl::visualization::PCL_VISUALIZER_POINT_SIZE, 2, "cloud in");
viz.setPointCloudRenderingProperties (pcl::visualization::PCL_VISUALIZER_POINT_SIZE, 5, "cloud out");
viz.setPointCloudRenderingProperties (pcl::visualization::PCL_VISUALIZER_COLOR, 1.0, 0.0, 0.0, "cloud out");
// Convert the octree to a VTK poly-data object
// show_octree(&octree, viz, true/*show full leaves only*/);
updateViewer (octree, viz, leaf);
// Enter the main loop
while (!viz.wasStopped ())
{
//main loop of the visualizer
viz.spinOnce (100);
boost::this_thread::sleep (boost::posix_time::microseconds (100000));
}
}