FileStorage für OpenCV-Python-API
Ich bin derzeit mit FileStorage - Klasse für die Speicherung von Matrizen XML/YAML mit OpenCV C++ API.
Allerdings habe ich zu schreiben, ein Python-Skript liest diese XML/YAML - Dateien.
Ich bin auf der Suche nach bestehenden OpenCV Python-API, die Lesen können, die XML/YAML - Dateien generiert, die von OpenCV C++ - API
- in der neuesten version (nach 3.1.0) python-bindings für FileStorage/FileNode wurden Hinzugefügt: github.com/Itseez/opencv/pull/6482
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie PyYAML zu analysieren, die YAML-Datei.
Seit PyYAML nicht verstehen OpenCV-Datentypen, müssen Sie einen Konstruktor für jedes OpenCV Datentyp, den Sie laden möchten. Zum Beispiel:
Sobald Sie das getan haben, laden Sie die yaml-Datei ist einfach:
Ergebnis wird ein dict, wo die Schlüssel sind die Namen von was auch immer Sie Sie gespeichert in der YAML.
comparison to 'None' will result in an elementwise object comparison in the future. if data in [None, ()]:
Zusätzlich zu @Mischa ' s Antwort, OpenCV YAML ist etwas inkompatibel mit Python.
Paar Gründe für die Inkompatibilität sind:
a: 2
, und nichta:2
für Python]Folgende Funktion kümmert sich um die Bereitstellung, die:
HINWEIS: Obige Antwort gilt nur für yaml ist. XML-die haben Ihre eigenen Probleme, etwas, das ich noch nicht vollständig erforscht.
%
vorYAML
?%YAML 1.0
bekomme ich einen ParseError. Dies ist mitPyYAML 3.12
fürPython 3.6
.Mithilfe der FileStorage-Funktionen von OpenCV 3.2, ich habe das mit Erfolg:
Schrieb ich ein kleines snippet zum Lesen und schreiben von FileStorage-kompatibel YAMLs in Python:
Zur Verbesserung auf der vorherigen Antwort von @Roy_Shilkrot ich Unterstützung für numpy Vektoren sowie Matrizen:
Beispiel:
Ausgabe:
Obwohl ich nicht kontrollieren konnte die Reihenfolge der Zeilen, cols, dt, Daten.