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

The Behavior of the cv2.ORB algorithm changes from version 4.1.2.30 to 4.2.0.32

Abierto
#452 2 comentarios 0 reacciones 0 asignados Ver en GitHub

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
opencv, python

Línea de trabajo

Comienza con el reproductor inline de alignImages y ejecútalo con las versiones de OpenCV-Python indicadas en Windows 10 usando imágenes de entrada idénticas. Compara los keypoints de ORB, los matches, la homografía y los tiempos para determinar si la regresión está en el paquete de Python o en el núcleo de OpenCV. Se considera terminado cuando la regresión está explicada y corregida, o cuando el issue se deriva al proyecto correspondiente con un caso mínimo reproducible.

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

Descripción

Expected behaviour

I use the ORB image registration algorithm and it worked until 4.1.2.30. Same solution on same data!

Actual behaviour

From Version 4.1.2.32 to newest (4.5.1.48) it has a different (wrong) solution on the same data AND it needs about 3 times more time.

Steps to reproduce
def alignImages(im, imRef):
    MAX_FEATURES = 1000
    GOOD_MATCH_PERCENT = 0.5

    # Detect ORB features and compute descriptors.
    orb = cv2.ORB_create(MAX_FEATURES, scaleFactor=2, WTA_K=4, scoreType=cv2.ORB_HARRIS_SCORE, patchSize=61)

    keypoints1, descriptors1 = orb.detectAndCompute(im, None)
    keypoints2, descriptors2 = orb.detectAndCompute(imRef, None)
    #print('after kp2: ', time.time() - t)

    print('len keypoints:', len(keypoints1), ' ',len(keypoints2))

    # Match features.
    matcher = cv2.DescriptorMatcher_create(cv2.DESCRIPTOR_MATCHER_BRUTEFORCE_HAMMING)
    matches = matcher.match(descriptors1, descriptors2, None)

    #print('after matcher: ', time.time() - t)

    # Sort matches by score
    matches.sort(key=lambda x: x.distance, reverse=False)

    # Remove not so good matches
    numGoodMatches = int(len(matches) * GOOD_MATCH_PERCENT)
    matches = matches[:numGoodMatches]

    # Extract location of good matches
    points1 = np.zeros((len(matches), 2), dtype=np.float32)
    points2 = np.zeros((len(matches), 2), dtype=np.float32)

    for i, match in enumerate(matches):
        points1[i, :] = keypoints1[match.queryIdx].pt
        points2[i, :] = keypoints2[match.trainIdx].pt

    # Find homography
    h, mask = cv2.findHomography(points1, points2, cv2.RANSAC)
    return h

  • operating system: WIN 10 64-bit
Issue submission checklist

sorry, i don't know if it is a opencv-python issue or a opencv issue.

Lenguaje dominante
Python
Estrellas
5.4k
Forks
1k
Merge medio
22 h 17 min
PR fusionados (30 d)
3

Guía de contribución

Abrir la guía de contribución

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 opencv/opencv-python

Todos los issues de opencv/opencv-python

Issues similares

Más issues de Python

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.