Runder maskieren Sie ein Bild in python mit numpy arrays

Ich versuche, Kreisförmige Maske, die ein Bild in Python durch Lesen eines Codes auf web, sondern völlig verloren in der Mathematik hier:

Bekam ich eine Bild (image_data ) von type = numpy.ndarray mit shape = (3725, 4797, 3)

total_rows, total_cols, total_layers = image_data.shape

X, Y = np.ogrid[:total_rows, :total_cols]

center_row, center_col = total_rows/2, total_cols/2

dist_from_center = (X - total_rows)**2 + (Y - total_cols)**2

radius = (total_rows/2)**2

circular_mask = (dist_from_center > radius)

Ich weiß, dass er angewendet euclidean distance zu berechnen dist_from_center aber ich habe nicht X - total_rows und Y - total_cols Teil

Welche Rolle X und Y spielen auf dem Kreis ?

  • Das ist eigentlich nicht der euklidischen Distanz. Sollte die Quadratwurzel der Summe. Und ja, ich glaube, du hast Recht, sollte center_row und center_col nicht total... ich denke, dieser code würde produzieren ein Viertel Kreis Maske in der Mitte oben Links, nicht in eine zentrierte kreisförmige Maske in dein Bild (Hinweis: dist_from_center ist immer noch falsch, in diesem Fall).
  • ja, es bildet einen Viertelkreis Maske, konnte Sie erklären Sie bitte, wie Sie feststellen, dass & könnten Sie bitte erklären np.ogrid in einfacheren Worten, alle Erklärungen auf der web in Bezug auf np.ogrid gehen weit über meinem Kopf.
  • Sicher, ich war am Handy als ich sah, dass dies so nicht schreiben, eine vollständige Antwort, ich dachte, jemand anderes hätte von der Zeit, als ich nach Hause kam, aber ich denke mal nicht. Ich werde für ihn gehen.
  • Vielen Dank, ich werde sein warten auf Ihre Antwort.
InformationsquelleAutor | 2017-07-01
Schreibe einen Kommentar