So extrahieren Sie einen Polygonbereich in Python

0. Übersicht

Wenn Sie das COCO-Format verwenden, möchten Sie häufig nur bestimmte Objekte extrahieren. Zu diesem Zeitpunkt ist es erforderlich, die Polygoninformationen als Maske zu verwenden, um ein Objekt aus dem Bild zu extrahieren. Selbst wenn ich nach dieser Methode suche, kann ich sie nicht finden. Dieses Mal werde ich eine solche Methode vorstellen.

1. Code

Zunächst sollten Sie es in Sekunden sehen können, indem Sie den folgenden Code betrachten.

import cv2

src_img = cv2.imread("YOUR_PATH")

# parameter
sg = [1, 1, 2, 2, 3, 3]
bb = [1, 1, 2, 2]

# working file
mask = np.zeros_like(src_img) # (y, x, c)

# segmentation data
sg = np.asarray(sg[0])
poly_number = int(len(sg)/2)
poly = np.zeros( (poly_number, 2) )
for i in range(poly_number):
  poly[i][0] = sg[(i * 2) + 0] # x
  poly[i][1] = sg[(i * 2) + 1] # y

# generate mask
mask = cv2.fillConvexPoly(mask, np.array(poly, 'int32'), color=(255, 255, 255))

# generate src_img and mask_image
cv2.imwrite("./src_img.png ", src_img)
cv2.imwrite("./mask.png ", mask)

# masked image
masked_src_img = np.where(mask==255, src_img, mask)
cv2.imwrite("./procData/masked.png ", masked_src_img)

# cropping img
bb = np.asarray(bb, 'int32')
offset_x = bb[0]
offset_y = bb[1]
length_x = bb[2]
length_y = bb[3]
cv2.imwrite("./masked_crop.png ", masked_src_img[offset_y : (offset_y + length_y), offset_x : (offset_x + length_x)])

Zunächst wird das Polygon in ein Maskenbild unten konvertiert. Beachten Sie, dass andere Fehler als "int32" auftreten.

cv2.fillConvexPoly(mask, np.array(poly, 'int32'), color=(255, 255, 255))

Als nächstes müssen Sie nur angeben, dass der Teil des Maskenbildes mit dem Wert 255 den Wert "src_img" verwendet.

masked_src_img = np.where(mask==255, src_img, mask)

Wenn Sie im Begrenzungsfeld zuschneiden, können Sie schließlich einen bestimmten Bereich extrahieren.

Enjoy !

Recommended Posts

So extrahieren Sie einen Polygonbereich in Python
Wie man in Python entwickelt
[Python] Wie man PCA mit Python macht
So sammeln Sie Bilder in Python
Verwendung von SQLite in Python
Wie man MySQL mit Python benutzt
So verpacken Sie C in Python
Verwendung von ChemSpider in Python
Verwendung von PubChem mit Python
Umgang mit Japanisch mit Python
So extrahieren Sie einen Termin in Google Kalender mit Python
[Einführung in Python] Wie verwende ich eine Klasse in Python?
Dynamisches Definieren von Variablen in Python
So machen Sie R chartr () in Python
[Itertools.permutations] So löschen Sie eine Sequenz in Python
So arbeiten Sie mit BigQuery in Python
Wie bekomme ich Stacktrace in Python?
So zeigen Sie die neunundneunzig Tabelle in Python an
So überprüfen Sie die Version von opencv mit Python
So wechseln Sie die Python-Version in Cloud9
So passen Sie den Bildkontrast in Python an
Verwendung von __slots__ in der Python-Klasse
So füllen Sie mit Python dynamisch Nullen aus
Verwendung regulärer Ausdrücke in Python
So zeigen Sie Hello World in Python an
Verwendung ist und == in Python
Wie schreibe ich Ruby to_s in Python
So installieren Sie Python
Verwendung der C-Bibliothek in Python
So empfangen Sie Befehlszeilenargumente in Python
[REAPER] Wie man Reascript mit Python spielt
So löschen Sie einen Taple in einer Liste (Python)
So generieren Sie eine Sequenz in Python und C ++
Zusammenfassung zum Importieren von Dateien in Python 3
So vereinfachen Sie die eingeschränkte Polypoly-Anpassung in Python
Verwendung der Python-Bildbibliothek in der Python3-Serie
So implementieren Sie Shared Memory in Python (mmap.mmap)
So erstellen Sie eine JSON-Datei in Python
Zusammenfassung der Verwendung von MNIST mit Python
So geben Sie die TLS-Version in Python-Anforderungen an
So überprüfen / extrahieren Sie Dateien im RPM-Paket
So benachrichtigen Sie Discord-Kanäle in Python
So erhalten Sie die Dateien im Ordner [Python]
Wie man tkinter mit Python in Pyenv benutzt
So führen Sie LeapMotion mit Nicht-Apple Python aus
[Python] Wie zeichnet man mit Matplotlib ein Histogramm?
So geben Sie "Ketsumaimo" standardmäßig in Python aus
Wie man mit dem Datum / Uhrzeit-Typ in Pythons SQLite3 umgeht
So nehmen Sie Python Interpreter-Änderungen in Pycharm vor
Wie man Autokorrelation und partielle Autokorrelation mit Python zeichnet
So entfernen Sie doppelte Elemente in der Python 3-Liste
20. Offline-Echtzeit So schreiben Sie Probleme in Python
So rufen Sie den n-ten größten Wert in Python ab
[Für Anfänger] Wie man den Befehl say mit Python benutzt!
So konvertieren / wiederherstellen Sie einen String mit [] in Python
So erhalten Sie den Variablennamen selbst in Python
So installieren Sie Python [Windows]
So löschen Sie stdout in Python
So ermitteln Sie die Anzahl der Stellen in Python