Opening Closing mit 5x5 Maske



  • Hallo da draussen ,

    ich möchte eine opening operation auf ein bild ausführen mit einer 5x5 maske und dem zentralelement in der mitte wäre der folgende code denn richtig ?

    Mat img_raus;
    	Mat element5 = Mat (5,5,1); 
    	for (int i = 0; i < 1; i++)
    	{
    		morphologyEx(img_rein, img_raus, MORPH_CLOSE, element5, Point(2, 2), i);
    	}
    


  • Keine Ahnung. Benutzt du eine Bibliothek? Ich hatte das damals selbst implementiert.



  • Schande über mein Haupt sorry natürlich muss ich Inofs nachtragen ...

    1. Ich nutze openCV und C++
    2. Natürlich muss ich die Mat noch mit 1 en füllen
    3. beim Anker bin ich mir auch nicht sicher ich glaube default ist Point(-1,-1) das zentral element der Mat().

    Mat imgraus;
    Mat element5 = Mat (5,5,1);
    element5.setTo(cv::Scalar::all(1));
    morphologyEx(imgrein, imgraus, MORPH_CLOSE, element5, Point(-1, -1), 1);
    

    ist das so richtig ?



  • Als Punkt gibst du entweder selbst den Mittelpunkt an, oder du setzt eben -1 dann wird die Mitte verwendet.

    Du erzeugst zuerst ein strukturierendes Element, welches danach auf die Eingabebilder angewendet werden kann. OpenCV bietet bereits dilate und erode, damit ist es einfach ein Opening bzw. Closing zu realisieren.

    // Hab das damals so gemacht
        cv::Mat structElement=cv::getStructuringElement
                                (
                                    cv::MORPH_RECT
                                    ,cv::Size(3,3)
                                    ,cv::Point(1,1)
                                 );
    
        cv::dilate(imgProb,imgProb,structElement);
        cv::erode(imgProb,imgProb,structElement);
    

Anmelden zum Antworten