Ich versuche, OpenCVs HOG-Deskriptor zu verwenden, aber der daraus berechnete Merkmalsvektor erscheint viel zu lang. Hier ist ein Ausschnitt, der das Problem veranschaulicht:
%Vor%Die Ausgabe ist
%Vor% Letzterer Wert scheint absurd. Das Bild 1.jpg
hat die Dimension 256x256x3, die viel weniger Pixel als der Feature-Vektor hat. Warum füllt OpenCV den Feature-Vektor mit so vielen Werten? Wie erhalte ich den 3780 langen Vektor, der meinem SVM-Trainer zugeführt werden soll?
Warum füllt OpenCV den Feature-Vektor mit so vielen Werten?
Die Größe von hog Features wird durch die folgende Gleichung bestimmt (nicht nur auf den Bilddimensionen bestimmt):
%Vor%Es ist also ganz normal, dass Sie einen so langen HOG-Feature-Vektor haben.
Wie erhalte ich den 3780 langen Vektor, den ich meinem SVM-Trainer zuführen soll?
Sie können die Parameter (d. h. nbins, blockSize, cellSize, winSize
) der HOG-Funktion vor der Berechnung einstellen, um eine HOG-Funktion mit der gewünschten Größe zu erhalten.
Aber warum sind hogdis.getDescriptorSize () und features.size () inkonsistent?
Sie sind anders. getDescriptorSize()
gibt die Anzahl der für die Klassifizierung erforderlichen Koeffizienten zurück. Und es kann wie folgt berechnet werden (siehe hier ):
Auf der anderen Seite gibt features.size()
die gesamte HOG-Feature-Größe des gesamten Bildes zurück.
Um zu trainieren, müssen Sie features
übergeben.
Tags und Links c++ opencv computer-vision