Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

[visualization] AreaPickingEvent.getPointsIndices() returns wrong indices

Abierto
#6,119 8 comentarios 0 reacciones 0 asignados Ver en GitHub

Los mantenedores suelen responder en 4 días

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
4/5
Tiempo estimado
3-5 días
Aptitud para principiantes
35/100
Tipo de issue
Error
Claridad
Bastante claro
Estado de actividad
Estancado
Stack tecnológico
cpp

Línea de trabajo

Comienza con pcl::visualization::AreaPickingEvent::getPointsIndices y el callback pp_callback_AreaSelect mostrado en el issue. Reproduce la selección de área usando la interacción de visualización documentada; después, compara los índices devueltos con la nube de puntos seleccionada y revisa la documentación de AreaPickingEvent. Se considera terminado cuando los índices coinciden con el área seleccionada y los pasos necesarios para la selección están documentados.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

kind: bug status: triage

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.

8a9d95690be3ac89b38d439f3856130

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

f144d201a00337c93d1b5182146f25e

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.

Lenguaje dominante
C++
Estrellas
11.2k
Forks
4.7k
Merge medio
5 d 8 h
PR fusionados (30 d)
10

Preparar el entorno

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de PointCloudLibrary/pcl

Todos los issues de PointCloudLibrary/pcl

Issues similares

Más issues de C++

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.