15 Stimmen

OpenCV wie man eine Liste der verbundenen Komponenten in einem binären Bild findet

Ich verwende OpenCV für eine C++-Anwendung. Ich habe ein 8-Bit-Binärbild, das einige Objekte enthält. Die Objekte sind alle mit 255 gefärbt, während alles im Hintergrund mit 0 gefärbt ist. Jedes Objekt hat keine leeren (schwarzen) Pixel darin. Mit anderen Worten, jedes Objekt ist vollständig weiß. Die Objekte sind NICHT miteinander verbunden. Hier ist, was ich aus diesem Bild extrahieren möchte:

Ich möchte eine Art Liste von Objekten extrahieren, aus der ich eine Vorstellung vom Standort jedes Objekts in dieser Liste habe. Dies könnte mit cvConnectedComponents() oder etwas anderem erfolgen. Ich benötige eine Angabe darüber, wo sich jedes Objekt im Bild befindet. Dies könnte in Form eines Begrenzungsrahmens für jedes Objekt oder des Medians oder Zentrums basierend auf einer Berechnung oder alles, was mir einen Maß für den Standort der Objekte im Bild gibt. Gibt es Hinweise darauf, welche OpenCV-Funktionen ich mir ansehen sollte?

33voto

Alessandro Jacopson Punkte 17059

Ab Version 3.0 verfügt OpenCV über die connectedComponents Funktion.

11voto

Francesco Callari Punkte 11040

Sie müssen die Konturen, die von cv::findCountours zurückgegeben werden, mit cv::floodFill füllen. Siehe dieses Beispiel für findContours und dieses für floodFill

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X