-
-
Notifications
You must be signed in to change notification settings - Fork 4.7k
Description
My Environment:
- OS: Windows 11
- Compiler: MSVC2019_64
- PCL Version 1.12.1
- VTK 9.1.0
- Qt 5.15.2
Problem
I integrated the areapickingevent under the visualization module in my Qt program, and tried to get the point cloud index of my selected area through getPointsIndices. But after I visualized the resulting point cloud, I found that the point cloud index was wrong.

The green box in the picture above is the part I selected.

The green box in the above picture is the result of the selected point cloud visualization.
Code
void PCL_test::pp_callback_AreaSelect(const pcl::visualization::AreaPickingEvent& event, void* args)
{
PCL_test* p = (PCL_test*)args;
std::vector<int > indices;
if (event.getPointsIndices(indices) == -1)
return;
p->selected_3D_points->clear();
qDebug() << "Pointcloud area size: " << indices.size() << endl;
for (int i = 0; i < indices.size(); ++i)
{
qDebug() << "Selected point[" << i + 1 << "] indice" << indices[i] << ":" << p->cloudptr->points.at(indices[i]).x << ", " << p->cloudptr->points.at(indices[i]).y << ", " << p->cloudptr->points.at(indices[i]).z << endl;
p->selected_3D_points->points.push_back(p->cloudptr->points.at(indices[i]));
}
//qDebug() << "Select points size: " << p->selected_3D_points->width << "*" << p->selected_3D_points->height << endl;
//*p->cloudptr = *p->selected_3D_points;
pcl::visualization::PointCloudColorHandlerCustom<pcl::PointXYZI> cloud_color(p->selected_3D_points, 0, 255, 0);
p->cloud_viewer->removeShape("pick");
p->cloud_viewer->addPointCloud(p->selected_3D_points, cloud_color, "pick");
p->cloud_viewer->setPointCloudRenderingProperties(pcl::visualization::PCL_VISUALIZER_POINT_SIZE, 3, "pick");
p->ui.qvtkwidget_cloudviewer->update();
}
Additional context
I found that getPointsIndices does not have any parameters for viewing angle settings, and I don't know what other factors will affect the accuracy of point cloud selection. In addition, I would like to add that I did not see any specific point cloud selection operation instructions in the official documentation, such as "press x first, then use the left mouse button to select, and then press x to visualize the selection results". I hope the official can add more detailed introductions in subsequent updates. Thanks a lot.