Ich versuche, einen Videoclip Bild für Bild in eine HDF5-Datei zu speichern. Mein Code funktioniert soweit, aber mir ist aufgefallen, dass die Größe der hdf5-Datei im Vergleich zur Quellvideodatei mehr als 10 mal größer ist.Python speichern Video als HDF5 ergibt große Dateigröße
Eingabedatei: AVI 200 x 126px, Dauer: 16 Minuten, Größe: 82 MB
Ausgabedatei: hdf5, gzip Kompression, Kompression = 9, Größe: 1 GB
Der Code, den Rahmen zu speichern, ist ziemlich einfach:
import h5py
from skvideo.io import VideoCapture
frames = []
cap = VideoCapture('/home/ubuntu/PycharmProjects/video2H5Test/data/video_F100_scaled2.avi')
cap.open()
it = 0
while True:
retval, image = cap.read()
if image != None:
frames.append(image)
it += 1
if (it % 1000 == 0):
print('Processed %d frames so far' % (it))
if not retval:
break
with h5py.File('./test3.hdf5','w') as h5File:
h5File.create_dataset('camera1',data=frames,compression='gzip',compression_opts=9)
Wie Sie können sehen, ich verwende bereits gzip, um meine Datenmenge zu komprimieren.
Gibt es eine andere Möglichkeit, Speicherverbrauch zu sparen?
Sie haben vergessen, die Komprimierung hinzuzufügen. Ohne sie ist die Dateigröße die gleiche wie das Erstellen von separaten Datensätzen für jeden Frame, aber dauert 10 mal länger – crazjo