El problema está en cómo se están gestionando la introducción del campo de vectores guía en esta función. Lo ideal es que estuviera como argumento el propio V. No que se escriba un String y este esté en una especie de switch...
No ha dado problema hasta ahora porque siempre se declaraba antes, pero si se ejecutase lineal sin nada precargado...
Al siguiente fragmento de código me refiero, donde pone #calculamos campos escalares:
def OneChannelDiscretePoissonSolver( source, targetImg, selectedSet, V = "", edges = None):
''' Devuelve f, la función interpolación para los canales dados
source: Imagen de la que se extrae la región que se quiere clonar
targetImg: Imagen donde se va a posicionar la nueva región
selectedSet: Conjunto de puntos con las región selecciónada, a de calcularse previamente
V: Campo de vectores guía, debe de ser una función que reciba dos píxeles y devuelva dos números reales. Si none se toma la divergencia de targetImg.
'''
# Calculamos borde del arcoiris
sourceBoundary = SourceBoundary(targetImg, selectedSet)
# Calculamos el campo de escalares
if(V == "" or V == "originalGuidance"):
V = GuidanceFieldGenerator(source,targetImg) # imagen original de la que se extrae la región seleccionada
# Nótese que aquí se trabaja con las coordenadas de esos píxeles
elif (V == "mixingGradients"):
V = GuidanceFieldMixingGradients(source, targetImg)
elif (V == "textureFlattening"):
V = TextureFlattening(source, edges)
La solución que he tomado consiste en escribir las funciones (repetidas) al principio del código e indicar que ya se redefinirán y comentarán más adelante.
El problema está en cómo se están gestionando la introducción del campo de vectores guía en esta función. Lo ideal es que estuviera como argumento el propio V. No que se escriba un String y este esté en una especie de switch...
No ha dado problema hasta ahora porque siempre se declaraba antes, pero si se ejecutase lineal sin nada precargado...
Al siguiente fragmento de código me refiero, donde pone
#calculamos campos escalares
: