Ich habe ein Bild, mit dem ich lade:
%Vor%Ich möchte Daten behalten, die sich in der Mitte des Bildes befinden. Ich habe einen Kreis als Maske des Bereichs erstellt, den ich behalten möchte.
Ich habe den Kreis mit:
erstellt %Vor%Wie kann ich die Daten außerhalb des Kreises vom Originalbild ausblenden?
%Vor%funktioniert nicht.
circle
ist nur ein 2D-Array mit 1.0
s und 0.0
s. Numpy braucht Hilfe, um zu verstehen, was Sie mit der dritten Dimension von im
machen wollen, also müssen Sie ihm eine zusätzliche Achse geben und dann würde Ihre Linie funktionieren.
Beachten Sie jedoch, dass die Maskierung einfach die Farbe auf (0, 0, 0)
für Dinge außerhalb des Kreises gemäß Ihrem Code setzt, wenn das Bild keinen Alpha-Kanal hat.
Sie haben jedoch ein anderes potentielles Problem: circle
wird vom Standarddatentyp sein (was wahrscheinlich float64
oder float32
sein wird. Das ist nicht gut für Ihr Bild, also sollten Sie die Zeile ändern, in der Sie erstellen circle
bis
Wenn Sie in diesem Fall ein kreisförmiges Bild haben wollen, müssen Sie einen neuen Algorithmus schreiben und zuerst müssen Sie auf die Koordinaten von Pixeln zugreifen können .... dann können Sie für alle Pixel einen Vergleich durchführen, für die es keine gibt Kreisfläche muss Nullwert haben dann hast du alles was du willst! aber ich weiß nicht opencv
akzeptiert den Nullwert oder nicht? So können Sie es ausprobieren!
Auch ich schreibe diesen Code und versuche ein paar Wege, aber ich konnte kein richtiges Ergebnis bekommen! In diesem Code mache ich ein Rechteck um den Kreis und versuche die Pixel außerhalb des Kreises zu sichern!
%Vor%