tengo un pequeño problema, cuando tomo el contorno de una imagen, me sale esta figura:¿Cómo conecto curvas discontinuas en matplotlab, scipy, o etc
Como se puede veo que puedo extraer el contorno, pero tan pronto como extraigo la ruta, dejará estos extraños secantes que cruzarán la imagen porque hay dos áreas discontinuas en la curva. Me pregunto si hay una forma de desconectar las líneas discontinuas o es mi camino extraer el código es incorrecto
import matplotlib.pyplot as plt
import numpy as np
def contourPath(img, width, height):
x = np.arange(0,width)
y = np.arange(height,0,-1)
X, Y = np.meshgrid(x,y)
plot = plt.contour(X,Y,img, [0])
pathList = plot.collections[0].get_paths()
x, y = [], []
for i in range(0, len(pathList)):
iterPath = pathList[i].iter_segments()
for point in iterPath:
pt = np.rint(point[0])
x.append(pt[0])
y.append(pt[1])
X = np.hstack(x)
Y = np.hstack(y)
return np.dstack((X,Y))[0]
Gracias por su tiempo
para user545424 Aquí supongo. La función de contorno Matplotlib funciona correctamente ya que hay dos puntos discontinuos en la imagen que causaron este pequeño evento.
me entero de que esas líneas secantes son causadas por scypi, pero plantea otra cuestión de cómo las bibliotecas interactúan con los puntos del contorno
Bueno, creo que es posible enmascarar el problema mediante la búsqueda de la ruta y interpolarlo. Pero, me gusta evitar volver a definir el camino, ya que el problema de los vendedores ambulantes no es agradable en mi computadora.
¿Tiene alguna sugerencia?
Se puede publicar la imagen? – user545424
De su edición, no está claro si todavía tiene el problema o no. Y, dicho sea de paso, ¿es esto una retina? – heltonbiker
Lo sé, pero volver a definir el camino derrota el propósito de un objeto de ruta. Oh, bueno, podría haberlo publicado como solucionado, supongo. Convirtiendo a polar, el usuario argsort() para obtener el índice e interpolar la imagen es más simple. – user1462442