Ich habe diese Kontur mit matplotlib erhalten:Convert Kontur (matplotlib oder OpenCV) zum Bild der gleichen Größe wie das Original
Jetzt will ich es als ein normales Python Bild verwenden (PIL oder Array), weil ich eine Maske (mit OpenCV erhalten) anwenden möchte.
Das Problem ist, dass mit MatplotLib das Bild mit der Kontur in der Größe geändert wird, und ein Rand hinzugefügt wird (für die Achse, auch wenn ich die Achse nicht zeichne), so das Bild, das ich von der Figur von erhalten MatplotLib passt nicht zu der mit OpenCV erhaltenen Maske.
Ich habe versucht, die gleiche Kontur mit OpenCV zu bekommen, aber ich bekomme kein Ergebnis mit den Funktionen cv2.FindContours und cv2.DrawContours (wenn Sie wissen, wie es so geht, bitte sagen Sie mir ... in Diese previous topic können Sie das Originalbild und die Kontur, die ich will)
Eine andere mögliche Lösung wäre, die Kontur mit der MatplotLib in ein Bild (PIL oder Array) mit der gleichen Größe wie das Original, und ohne zu konvertieren Ränder.
Ich hoffe, Sie könnten mir zumindest mit einer dieser Lösungen helfen!
--------------------------- BEARBEITEN ------------------ ---------
Die Antwort von Rutger Kassies ist richtig. Es war nicht für mich zu arbeiten, weil ich diese Linie ...
ax = plt.axes([0, 0, 1, 1], frame_on=False, xticks=[], yticks=[])
schrieb ... nach der Konturfunktion, und es vor der Verwendung der Konturfunktion sein muss. Merk dir das!
Es wäre besser Stil sein, die OO-Schnittstelle zu verwenden, anstatt den Zustand Maschine-Schnittstelle. dh 'c = ax.contour (...)' und 'fig.savefig (...)' – tacaswell
stimme ich völlig zu, der OO-Stil ist definitiv besser. Dieser Code war im Grunde eine Änderung des Codes in dem erwähnten "vorherigen" Post, wo ich beabsichtigte, so nah wie möglich am ursprünglichen Code zu bleiben. –
@Rutger Kassies danke für deine Antwort. Bitte, sehe meine Bearbeitung in der Frage. Ich weiß nicht, warum es noch einen Spielraum gibt. – Xithias