Das Problem
Ich arbeite mit einer Kamera, die alle 5 Sekunden oder so einen Schnappschuss ins Internet stellt. Die Kamera überwacht eine Menschenreihe. Ich möchte, dass mein Skript mir sagen kann, wie lang die Menschenreihe ist.
Was ich versucht habe
-
Zuerst dachte ich, dass ich dies mit
BackgroundSubtractorMOG
machen könnte, aber das erzeugt nur ein schwarzes Bild. Hier ist mein Code dazu, angepasst um ein Bild anstelle einer Videoaufnahme zu verwenden:import numpy as np import cv2 frame = cv2.imread('sample.jpg') fgbg = cv2.BackgroundSubtractorMOG() fgmask = fgbg.apply(frame) cv2.imshow('frame', fgmask) cv2.waitKey()
-
Dann habe ich mir Vordergrundextraktion auf einem Bild angesehen, aber das ist interaktiv und passt nicht zu meinem Anwendungsfall, bei dem das Skript mir sagen soll, wie lang die Menschenreihe ist.
-
Ich habe auch versucht peopledetect.py zu verwenden, aber da das Bild der Reihe aus einer erhöhten Position stammt, erkennt dieses Skript keine Menschen.
Ich bin ganz neu in opencv, also bin ich für jede Hilfe sehr dankbar. Ich kann auf Anfrage weitere Details liefern.
Hinweis:
Ich suche nicht unbedingt nach jemandem, der das Gesamtproblem löst, sondern ich versuche nur herauszufinden, wie man die Menschen vom Hintergrund trennen kann. Allerdings bin ich offen dafür, das Problem auf eine andere Weise anzugehen, wenn Sie glauben, dass Sie eine bessere Lösung haben.
EDIT: Hier ist ein Beispielbild wie angefordert: