• Empleos
  • Sobre nosotros
  • profesionales
    • Inicio
    • Empleos
    • Cursos y retos
  • empresas
    • Inicio
    • Publicar vacante
    • Nuestro proceso
    • Precios
    • Evaluaciones
    • Nómina
    • Blog
    • Comercial
    • Calculadora de salario

0

232
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.

about 3 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

about 3 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 Nuestro proceso Comercial
Legal
Términos y condiciones Política de privacidad
© 2025 PeakU Inc. All Rights Reserved.

Andres GPT

Recomiéndame algunas ofertas
Necesito ayuda