ho questo contorno ottenuto con matplotlib:Convert contorno (matplotlib o OpenCV) per l'immagine della stessa dimensione dell'originale
Ora, voglio usarlo come immagine di normale Python (PIL o array), perché voglio applicarlo con una maschera (ottenuta con OpenCV).
Il problema è che con MatplotLib, l'immagine con il contorno viene ridimensionata e viene aggiunto un margine (per l'asse, anche se non disegno l'asse), quindi l'immagine che ottengo dalla figura di MatplotLib non si adatta alla maschera ottenuta con OpenCV.
Ho cercato di ottenere lo stesso contorno con OpenCV, ma non ottengo alcun risultato con le funzioni cv2.FindContours e cv2.DrawContours (se sai come farlo in questo modo, per favore dimmi ... in questo previous topic è possibile vedere l'immagine originale e il contorno che voglio)
Un'altra possibile soluzione sarebbe quella di convertire il contorno ottenuto con MatplotLib in un'immagine (PIL o array) con le stesse dimensioni dell'originale, e senza margini.
Spero che tu possa aiutarmi almeno con una di queste soluzioni!
--------------------------- MODIFICA ------------------ ---------
Rutger La risposta di Kassies è giusta. Non stava lavorando per me, perché ho scritto questa linea ...
ax = plt.axes([0, 0, 1, 1], frame_on=False, xticks=[], yticks=[])
... dopo aver utilizzato la funzione di contorno, e deve essere prima di utilizzare la funzione di contorno. Tienilo a mente!
Sarebbe stile meglio utilizzare l'interfaccia OO, piuttosto che l'interfaccia macchina statale. cioè 'c = ax.contour (...)' e 'fig.savefig (...)' – tacaswell
Concordo pienamente, lo stile OO è decisamente migliore. Questo codice era fondamentalmente una modifica del codice nel post "precedente" menzionato in cui intendevo rimanere il più vicino possibile al codice originale. –
@Rutger Kassies, grazie per la tua risposta. Per favore, vedi la mia modifica nella domanda. Non so perché c'è ancora un margine. – Xithias