2016-06-23 9 views
0

Ich habe Objekte, die in einer binären Schwellenwertmatrix als weiße Halos erscheinen. Ich habe diesen Code, um das Halos weiß zu füllen, so kann ich in der Matrix feste weißen Kreise habe:OpenCV Löcher in Binary Mat für mehrere Objekte füllen

void processBinary(Mat& binaryMat) { 
    Mat clone; 
    binaryMat.copyTo(clone); 
    vector<vector<Point>> contours; 
    findContours(clone, contours, RETR_EXTERNAL, CHAIN_APPROX_SIMPLE); 

    if (!contours.empty()) { 
     drawContours(binaryMat, contours, 0, Scalar(255), CV_FILLED); 
    } 
} 

Dies funktioniert, wenn ich nur ein Objekt in dem Kamera-Feed hat. Bei mehreren der gleichen Objekte wird jedoch kein Objekt gefüllt, es sei denn, ich entferne alle Objekte bis auf eines der Objekte aus der Szene. Wie kann ich den Code so korrigieren, dass jedes Objekt als weißer Kreis ausgefüllt wird?

+2

versuchen Sie 'drawContours (binaryMat, Konturen, -1, Skalar (255), CV_FILLED);' – sturkmen

+0

das funktioniert, danke! –

Antwort

-1

Durchläuft die Methode "drawContours" alle Konturen? Steuerelemente sind im Grunde als verkettete Liste Tyhat angegeben, die geloopt werden muss, um sie alle durch Aufruf während zu erhalten (Konturen! = Null) .... contours = contours.VNext; // Oder HNext für abhängig von Ihrem Code.