Meine Frage ist der letzte Absatz.Tuning Hintergrund Subtraktion mit OpenCV
Ich versuche einen der OpenCV-Hintergrundsubtrahierer als Mittel zur Erkennung von menschlichen Händen zu verwenden. Der Code, der dies zu tun versucht, ist wie folgt:
cv::Ptr<cv::BackgroundSubtractor> pMOG2 = cv::createBackgroundSubtractorMOG2();
cv::Mat fgMaskMOG2;
pMOG2->apply(input, fgMaskMOG2, -1);
cv::namedWindow("FG Mask MOG 2");
cv::imshow("FG Mask MOG 2", fgMaskMOG2);
Als ich anfangs das Programm auf meinem eigenen Test-Video lief ich mit diesem (ignorieren Sie den Namen der am weitesten rechts stehenden Fenstern) begrüßt wurde: Wie Sie Ich kann sehen, dass eine Maske für meine bewegliche Hand überhaupt nicht erkannt wird, da der Hintergrund in meinem Video vollständig stationär ist (es könnten vielleicht ein oder zwei weiße Pixel gleichzeitig in der Maske auftauchen). Also habe ich versucht, ein anderes Video zu verwenden, das viele Beispiele zu verwenden schienen, das den Verkehr bewegte.
Sie können sehen, dass es auf einem fahrenden Auto aufgenommen wurde - sehr leicht. Ich habe versucht (für beide Videos), die "Lernschwelle" für die apply
Methode auf viele Werte zwischen 0 und 1 zu setzen und es gab nicht viel Variation von den Ergebnissen, die Sie oben sehen können.
Habe ich etwas in Bezug auf die Einrichtung der Hintergrundsubtraktion verpasst oder sind die Videos besonders harte Beispiele? Wo kann ich die Einstellungen der Hintergrundsubtraktion anpassen, um mein Setup zu bevorzugen (falls irgendwo)? Ich wiederhole, dass in beiden Videos die Kamera stationär ist.
So viel wie Ich mag würde gerade diese Arbeit erhalten, diese nicht beantwortet meine Frage (n). Zusätzlich zu den Ressourcen wie [this] (https://www.youtube.com/watch?v=T-L9FoH3D9w) soll MOG2 sehr gut sein: – ZoSal