Ich habe eine sehr große Matrix, die eine Videodatei als ein Array von Frames ist, jeder etwa 350x250 Auflösung. Ich habe etwa 8.000-10.000 solcher Bilder in einer einzigen Videodatei, die etwa 1-1,5 GB groß ist. Ich habe festgestellt, dass HDF5 ein gutes Dateiformat für meine Verwendung ist, da ich viele mathematische Operationen an der Datei durchführen muss (über die gesamte Tiefe Spalte). Mein Problem ist, dass ich diese 3D-Matrix nicht in HDF5 speichern kann. Kann mir jemand vorschlagen, diese Frames inkrementell zu speichern (Frame für Frame zur hdf5-Datei hinzuzufügen) als 3D-Matrix im HDF5-Format? Ich benutze h5py Python-Paket.Wie wird eine sehr große 3-dimensionale Matrix im HDF5-Format gespeichert?
Antwort
Als Beispiel nehmen wir an, dass Ihr Video 10 Frames mit einer Auflösung von 200x200 Pixeln hat. Daher müssten Sie ein Dataset mit den Dimensionen 10 x 200 x 200 x 3 mit dem Datentyp uint8 erstellen (jede RGB-Komponente verwendet 8 vorzeichenlose Bits). Hier ist, wie dies auf die h5py API übertragen wird. Überprüfen Sie die docs für Details.
import h5py
import numpy as np
# create an hdf5 file
with h5py.File("/tmp/videos.h5") as f:
# create a dataset for your movie
dst = f.create_dataset("myvideo", shape=(10, 200, 200, 3),
dtype=np.uint8)
# fill the 10 frames with a random image
for frame in range(10):
dst[frame] = np.random.randint(255, size=(200, 200, 3))
Wenn Ihre Bilder Graustufen sind, ist die Form des Datasets natürlich 10 x 200 x 200. – weatherfrog
Genau das habe ich gebraucht. Es hat perfekt funktioniert! Vielen Dank! –
- 1. Wie man eine sehr große Matrix mit Matlab erstellt
- 2. sehr große Matrix Berechnung in R effizient
- 3. Sehr große Zeichenfolge im Speicher
- 4. Heat Map für eine sehr große Matrix, einschließlich NaNs
- 5. Echo eine sehr große Zahl
- 6. Wie kann ich sehr große Matrix in svg bauen
- 7. Wie wird BigInteger eine sehr große Nummer zugewiesen?
- 8. Wie wird eine große (10-stellige) Ganzzahl gespeichert?
- 9. Android Wie wird eine große Ganzzahl mit gemeinsamen Voreinstellungen gespeichert?
- 10. eine große Matrix in LaTeX
- 11. k-bedeutet Clustering in R auf sehr große, spärliche Matrix?
- 12. Wie man einen Vektor 3 mal multipliziert, um eine 3dimensionale Matrix zu erhalten
- 13. Wie kann ich eine sehr große MATLAB-Sparse-Matrix in einer Textdatei speichern?
- 14. Python: eine sehr große Binärdatei schneiden
- 15. Transaktionen über sehr sehr große Entitätsgruppe
- 16. Wie behandelt man sehr große Daten?
- 17. Große Matrix Inversion
- 18. PyInstaller sehr große Dateigröße
- 19. Sehr, sehr große Zahlen in vb.net
- 20. MATLAB: Mittelwert über eine große Matrix berechnen
- 21. Wie wird ein Array im Speicher gespeichert?
- 22. Wie wird aufgenommene Datei im Array gespeichert?
- 23. Baue große scipy spärliche Matrix
- 24. Wie wird der Wert im Array gespeichert?
- 25. Wie strukturiere ich eine sehr große App in Angular.js?
- 26. Handle sehr große http Download
- 27. HTTP Download sehr große Datei
- 28. pread für sehr große Dateien
- 29. Wird im Befehlscache Opcode gespeichert?
- 30. Wie wird ein sehr großes Wörterbuch im Speicher von Python gespeichert?
Mit Ideen von http://docs.h5py.org/en/latest/high/dataset.html uns zeigen, wie man ein kleines Array speichern würde, sagen 10 Frames der (20,20) Größe. Tipp, initialisiere den Datensatz auf (10,20,20) und iteriere auf "data [i,:,:] = frame". Holen Sie sich das zuerst für kleine Daten. Sie können später an dem großen Problem arbeiten. – hpaulj
Danke @hpaul. Das hat mein Problem gelöst. –