Ah bon ! Alors là c'est plus étonnant... Output a toujours été un simple pointeur vers l'app parente, mais qui hérite de otbObject.
Donc ça doit venir du workflow d'exécution, y a toujours cette histoire de Execute vs ExecuteAndWriteOutput sur lequel on est revenu de nombreuses fois
Je ne comprends pas pourquoi tu n'aurais pas le bug avec pyotb 1.5.4, mais je présume que c'est parce que la manière dont on gérais ConnectImage / PropagateConnectMode à l'époque produisait un mode "mixte" ou l'Output intermédiaire était flush sur le disque.
Mais là je n'ai pas d'autre explications qu'un bug dans le streaming OTB avec les output "secondaires".
Pour info ajouter ms.Execute() ou ms.PropagateConnectMode() en amont ne change rien.
J'ai également fait des tests avec DimensionalityReduction en pyotb, et en soit ce n'est même pas un soucis de streaming entre app.
En gros, dans le cas d'application multioutput, seule l'output "principal" semble être dispo pour la connexion in-memory. La sortie secondaire ne semble pas accessible tant que pas écrite sur le disque.
importpyotbdr=pyotb.DimensionalityReduction(img)dr["out"].to_numpy()# fonctionnedr["outinv"].to_numpy()# erreur : "No input image"dr["outinv"].write("/tmp/test.tif")# fonctionnedr["outinv"].to_numpy()# fonctionne - donc seulement après flush sur disque
Je regardais les issues existantes sur OTB, je ne sais pas trop, j'en créé une nouvelle ou je te laisse le faire (tu dois savoir où se situe le soucis dans le code python ou CPP) ?
Et est-ce que tu penses que ça peut être lié à https://gitlab.orfeo-toolbox.org/orfeotoolbox/otb/-/issues/2374 ?
Vincent Delbarchanged title from Apps with multiple outputs to Secondary outputs not available for in-memory connection
changed title from Apps with multiple outputs to Secondary outputs not available for in-memory connection