Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

350
Vistas
¿Cómo encajar una imagen binaria irregular con una línea recta?

Tengo una imagen binaria como la siguiente: La imagen binaria tiene un borde irregular en la parte inferior.

Quiero encontrar una línea recta que se ajuste al borde irregular, así: ingrese la descripción de la imagen aquí

¿Cuál será una buena manera de hacerlo? El ajuste no necesita ser preciso, y la velocidad es más crítica en mi caso.

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Para encontrar esquinas en su imagen, puede usar la función goodFeaturesToTrack en CV2.

Cuando encuentre las esquinas, debe considerar las esquinas cercanas al borde dentado.

Entonces, puedes dibujar una línea recta entre:

  1. Si el borde dentado es horizontal, la esquina más a la izquierda hacia la derecha.
  2. Si el borde es vertical, desde la esquina más alta hasta la más baja.
 # Required libraries import numpy as np import cv2 as cv from matplotlib import pyplot as plt # First, read the image img = cv2.imread("kitT9.png", cv2.COLOR_BGR2GRAY) gray = cv.cvtColor(img, cv.COLOR_BGR2GRAY) # Order the parameters for the `cv.goodFeaturesToTrack` function input_img = gray maxCorners = 20 qualityLevel = 0.01 minDistance = 1 corners = cv.goodFeaturesToTrack(input_img, maxCorners, qualityLevel, minDistance) # This is useful for debugging: draws the corners on the image. corners = np.int0(corners) for i in corners: x, y = i.ravel() cv.circle(img, (x, y), 3, 255, -1) # This part sorts the corners from left to right. def sorter(x): return x[0][0] corners = sorted(corners, key=sorter) # Extract the coordinates of the leftmost and rightmost corners left_corner = corners[0] right_corner = corners[-1] x1 = left_corner[0][0] y1 = left_corner[0][1] x2 = right_corner[0][0] y2 = right_corner[0][1] # Draw the required line! line_thickness = 2 img = cv2.line(img, (x1, y1), (x2, y2), (0, 255, 0), thickness=line_thickness) # In a notebook, show the final result plt.imshow(img), plt.show()

El resultado de salida

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda