Unterschied in opencv Schwein-Deskriptor in Python und c + + berechnet

Ich habe ein HOG SVM mit Python trainiert und die generierten SVM Gewichte und Koeffizienten auf dem Test Set mit Erfolg verwendet. Ich habe dann diese gleichen SVM Gewichte und Koeffizienten in C ++ auf dem gleichen Test-Set mit ähnlichen ( aber nicht genau gleichen ) Ergebnisse verwendet. Bei der Untersuchung fand ich, dass der HOG-Deskriptor, der in Python und C ++ berechnet wurde, trotz der gleichen opencv-Version nicht gleich ist, die gleichen HOGDEscriptor Parameter und genau das gleiche Bild. Die Frage hier drückt auch das gleiche Problem auf.

Hier sind die HOG-Deskriptoren, die von Python und C ++, den SVM-Gewichten und der elementweisen Multiplikation der beiden berechnet wurden

Erste 100 Werte von Graustufen HOG-Deskriptor

Erste 100 Werte von SVM-Gewichten

Erste 100 Werte der elementweise Multiplikation der beiden

Nun, wenn das Ergebnis der elementweise Mulitplication bis zu einem Skalar addiert und dem SVM-Koeffizienten hinzugefügt wird, ist die Antwort nicht gleich.

C ++

 element_wise_sum: -1.71889 SVM_coeff : -0.255268 SVM_response : -1.97416 

Python

 element_wise_sum: -1.78912728433 SVM_coeff : -0.255267763928 SVM_response : -2.04439504825 

Wie Sie sehen können, propagiert der winzige Fehler zum Endergebnis und der Unterschied könnte ein Bild falsch klassifizieren. Meine Frage ist, was ist die Quelle des Unterschieds zwischen der Python und C ++ – Version, obwohl Python ist nur eine Bindung an die zugrunde liegenden C + + OpenCv-Code.

  • Verwirrung des Referenzbesitzes: Wie ordnungsgemäß (über Py_DECREF) Objekte eines Objekts freizugeben?
  • Wie definiere ich eine Python-Metaklasse mit Boost.Python?
  • Dynamische Verknüpfung und Python SWIG (C ++) funktioniert in C ++ fehlschlägt in Python
  • Wie man C ++ Rückgabetyp std :: vector <int> in Python-Ctypen behandelt?
  • Vim [kompilieren und] verknüpfen
  • Conky-Schnittstelle
  • Python ist die beste Programmiersprache der Welt.