Python-OpenCV - Finden Sie schwarze Flächen in einem binären Bild
Gibt es irgendeine Methode/Funktion in der python-wrapper für Opencv, findet schwarze Flächen in einem binären Bild? (wie regionprops in Matlab)
Bis jetzt lade ich meine Quelle Bild, die verwandeln es in ein binäres Bild über die Schwelle und dann umkehren, um ihn zu markieren die schwarzen Bereiche (das sind jetzt weiß).
Ich kann nicht die Verwendung von third-party-Bibliotheken wie cvblobslob oder cvblob
+1 für Das keyword "regionprops", die mich gerettet Stunden googeln
InformationsquelleAutor Marco L. | 2012-01-29
Du musst angemeldet sein, um einen Kommentar abzugeben.
Im Grunde, verwenden Sie die
findContours
Funktion, in Kombination mit vielen anderen Funktionen von OpenCV bietet, die speziell für diesen Zweck.Nützliche Funktionen verwendet (überraschung, überraschung, Sie alle erscheinen auf der Statik und Form Deskriptoren Seite in die OpenCV-Docs):
findContours
drawContours
Momente
contourArea
arcLength
boundingRect
convexHull
fitEllipse
Beispiel-code (ich habe alle Eigenschaften von Matlab ist
regionprops
außerWeightedCentroid
undEulerNumber
- Sie erarbeiten könntenEulerNumber
mithilfecv2.RETR_TREE
imfindContours
und betrachten der resultierenden Hierarchie, und ich bin mir sicher, dassWeightedCentroid
würde nicht so schwer sein entweder.i
hat Intensitäti+1
(dies ist zu vermeiden, region 0 Verschmelzung mit dem hintergrund).InformationsquelleAutor mathematical.coffee
Nach invertieren von binären Bild zu schwarz für die weißen Flächen, gelten cv.FindContours Funktion. Er wird dir die Grenzen der region, die Sie benötigen.
Später kann man über cv.BoundingRect zu erhalten, minimale umgebende Rechteck der region. Wenn Sie erst einmal das Rechteck Eckpunkte, finden Sie Ihre Mitte etc.
Oder zu finden Schwerpunkt der region, über cv.Moment-Funktion nach der Suche nach Konturen. Dann verwenden Sie cv.GetSpatialMoments in x-und y-Richtung. Es wird erklärt, in der opencv-Handbuch.
Bereich zu finden, verwenden Sie cv.ContourArea Funktion.
InformationsquelleAutor Abid Rahman K
Verwandeln zu Binär-Bild mit Schwellenwert mit der
CV_THRESH_BINARY_INV
Flagge, Sie bekommen threshold + inversion in einem Schritt.InformationsquelleAutor Oliv
Wenn Sie erwägen, eine andere freie Bibliothek, die Sie nutzen könnten
SciPy
. Es hat eine sehr bequeme Möglichkeit des Zählens Bereichen:Wenn notwendig, die Sie verwenden können:
zuvor, um ein Bild mit der Maske, die enthält nur schwarz und weiß, wo weiß sind die Objekte im angegebenen Bereich.
InformationsquelleAutor Zelphir