2017-04-27 3 views
1

ich an einem Projekt arbeite, wo ich in der Lage bin, nach einigen Verfahren, um ein binäres Bild zu finden, wo sie bewegende Objekte sind weiß, der Rest ganz schwarz sein:OpenCV, Python: Pixel innerhalb einer Kontur finden

Binary image

Dann gibt es einen Algorithmus, der die Blobs aggregiert, die zusammen gehören sollen, basierend auf dem Abstand zwischen ihnen (der in der Mitte zum Beispiel). Dazu verwenden sie die findContour-Funktion, so dass jeder Blob, der mit einer Zahl gekennzeichnet ist, durch seine Konturpixel dargestellt wird (in meinem Bild wären 5, der in der Mitte besteht aus zwei nahen Blobs). Die Ausgabe des Algorithmus ist das Flag der zusammengehörenden Blobs, also beispielsweise mit dem obigen Bild, von oben nach unten: (1, [2, 3], 4, 5).

Jetzt möchte ich eine konkave Hülle für jeden dieser agglomerierten Blobs berechnen. Ich habe den Algorithmus, um es zu tun, aber ich kann es nicht auf die äußeren Pixel anwenden, ich brauche die Pixel des gesamten Objekts!

Wie kann ich das tun?

Das Problem ist, dass, wenn ich die Pixel aus dem Originalbild abrufen, ich die Verbindung zwischen "Pixel des Bildes" und "Blobs" verlieren. Die Blobs haben nur Informationen über die Kontur.

Ich wäre dankbar, wenn Sie eine Idee hatten, wie Sie das lösen können. :)

Antwort

0

Wie wäre es mit connectedComponents (oder connectedComponentsWithStats) anstelle von findContours?
Es wird Ihre Blobs finden, während Sie eine Liste aller Pixel in diesen Blobs (nicht nur die Kontur), in seiner "Ausgabe" Rückgabe-Array.

Verwandte Themen