FiducialCollection.estimatePose: ids/cornerss zip misaligns after ID filtering
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 3/5
- Tiempo estimado
- 1-2 días
- Aptitud para principiantes
- 76/100
- Tipo de issue
- Error
- Claridad
- Bien especificado
- Estado de actividad
- Tranquilo
- Stack tecnológico
- opencv, python
- Área
- computer-vision
Línea de trabajo
Empieza en ImageFiducials.py, en FiducialCollection.estimatePose, e inspecciona cómo se filtran las esquinas y los IDs detectados. Añade cobertura de regresión para múltiples tableros o IDs de marcadores adicionales y, después, verifica que las esquinas y los IDs filtrados sigan alineados y que la suite de pruebas existente pase.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Found 2026-08-03 while fixing the OpenCV 4/5 `ids` shape compat issue in the same method (see #44). `ImageFiducials.py`'s `FiducialCollection.estimatePose` does:
```python
cornerss = [
corners.T.squeeze()
for corners, id in zip(cornerss, ids)
if id in self._ids
]
ids = [id for corners, id in zip(cornerss, ids) if id in self._ids]
```
The second line's `zip(cornerss, ids)` pairs the already-filtered `cornerss` (reassigned on the line above) against the original, unfiltered `ids`. If any detected marker's ID isn't in `self._ids` (exactly the scenario the docstring calls out -- "filter the markers, useful if there are several ArUco boards in the scene"), the two lists have different lengths and `zip` silently pairs mismatched corners/ids from that point on. Only harmless when every detected marker happens to belong to this board (no actual filtering occurs), which is presumably why it hasn't been caught yet.
Fix
Compute the filtered `cornerss`/`ids` together in a single pass (e.g. one list comprehension producing tuples, then unzip), so both lists are always built from the same original, unfiltered pairing. Needs a test with multiple boards/extraneous marker IDs in view to catch a regression -- there's currently no coverage for the multi-board filtering case at all.
- Lenguaje dominante
- Python
- Estrellas
- 220
- Forks
- 30
- Merge medio
- 12 d 23 h
- PR fusionados (30 d)
- 5
Preparar el entorno
Aún no hemos revisado los archivos de configuración de este proyecto. Empieza por su README y consulta nuestra guía para la primera contribución para los pasos generales.
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de petercorke/machinevision-toolbox-python
-
tech-debt
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
-
tech-debt
Dificultad 2/5 1-3 horas Aptitud para principiantes 85/100
-
tech-debt
Dificultad 4/5 3-5 días Aptitud para principiantes 52/100
-
tech-debt
Dificultad 3/5 1-2 días Aptitud para principiantes 72/100
-
tech-debt
Dificultad 5/5 Más de una semana Aptitud para principiantes 25/100
Todos los issues de petercorke/machinevision-toolbox-python
Issues similares
-
documentation
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100
kristofdegrave/homeassistant-smart-charging#1413 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 88/100
nasa/earthdata-varinfo#113 ·
-
curriculum documentation quality
Dificultad 2/5 1-3 horas Aptitud para principiantes 88/100
githubnext/gh-aw-workshop#3849 ·
Los mantenedores suelen responder en 2 días
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 90/100
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 84/100
Los mantenedores suelen responder en 1 día