Ich konnte bewegte Objekte in einem Video verfolgen.
Ich möchte jedoch entscheiden, ob ein Objekt Person ist oder nicht. Ich habe das HOGDescriptor
in OpenCV versucht. HOGDescriptor hat zwei Methoden zum Erkennen von Personen: HOGDescriptor::detect
und HOGDescriptor::detectMultiScale
. OpenCV "sources \ samples \ cpp \ peopledetect.cpp" zeigt, wie HOGDescriptor::detectMultiScale
verwendet wird, die das Bild in unterschiedlichem Maßstab durchsuchen und sehr langsam ist.
In meinem Fall habe ich die Objekte in einem Rechteck verfolgt. Ich denke, mit HOGDescriptor::detect
zu erkennen, das Innere des Rechtecks wird viel schneller sein. Aber das OpenCV-Dokument hat nur die gpu::HOGDescriptor::detect
(ich kann immer noch nicht erraten, wie man es benutzt) und verpasste HOGDescriptor::detect
. Ich möchte HOGDescriptor::detect
verwenden.
Könnte jemand mir ein C ++ - Code-Snippet zur Verfügung stellen, das die Verwendung von HOGDescriptor::detect
zeigt?
danke.
Da Sie bereits eine Liste von Objekten haben, können Sie die Methode HOGDescriptor::detect
für alle Objekte aufrufen und die Ausgabe foundLocations
array überprüfen. Wenn es nicht leer ist, wurde das Objekt als Person klassifiziert. Die einzige Sache ist, dass HOG standardmäßig mit 64x128
windows arbeitet, also müssen Sie Ihre Objekte neu skalieren:
Wenn Sie OpenCV nicht mit CUDA
aktiviert haben, ist der Aufruf von gpu::HOGDescriptor::detect
gleich dem Aufruf von HOGDescriptor::detect
. Keine GPU wird aufgerufen.
Auch für Code können Sie
verwenden %Vor%Bearbeiten:
Ich möchte jedoch entscheiden, ob ein Objekt Person ist oder nicht.
Ich glaube nicht, dass Sie diesen Schritt brauchen. HOGDescriptor::detect
selbst wird verwendet, um Personen zu erkennen, sodass Sie sie nicht überprüfen müssen, da es sich bei den Personen um Personen handelt, die Ihrer Einrichtung entsprechen. Auf der anderen Seite können Sie den Schwellenwert festlegen, um die erkannte Qualität zu steuern.
Tags und Links c++ opencv image-processing