Open1
mp4 ファイルを静止画に変換しつつ .h5 (hdf5) を生成するコードスニペット
01_mp4_to_hdf5.py
"""
MP4ファイルを静止画化してさらに .h5 ファイルに変換するスクリプト
1. pip install opencv-python h5py
2. mp4_file_name のファイル名を変更してからこのスクリプトを実行
3. 生成された .h5 ファイルを Google Drive にアップロード
"""
import os
import cv2
import h5py
def video_to_hdf5(video_path, hdf5_path):
# OpenCVを使って動画を読み込む
cap = cv2.VideoCapture(video_path)
# フレーム数とフレームのサイズを取得
num_frames = int(cap.get(cv2.CAP_PROP_FRAME_COUNT))
frame_height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))
frame_width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))
# HDF5ファイルを書き込みモードで開く
with h5py.File(hdf5_path, 'w') as hf:
# データセットを作成(動画のフレーム数、高さ、幅、3(色チャンネル)の形状を持つ)
dset = hf.create_dataset('video', (num_frames, frame_height, frame_width, 3), dtype='uint8')
# 各フレームを読み込み、HDF5ファイルに保存
for i in range(num_frames):
ret, frame = cap.read()
if not ret:
print(f"Failed to retrieve frame {i}")
break
dset[i] = frame
cap.release()
print(f"Saved video to {hdf5_path}")
mp4_file_name = 'test.mp4'
base_name = os.path.splitext(mp4_file_name)[0]
video_to_hdf5(f'{base_name}.mp4', f'{base_name}.h5')
02_view_hdf5_images.py
"""
.h5 ファイルの中の画像を表示して確認するスクリプト
1. pip install opencv-python h5py
2. hdf5_path のファイル名を変更してからこのスクリプトを実行
"""
import os
import cv2
import h5py
import mimetypes
def display_frame_from_hdf5(hdf5_path):
print(mimetypes.guess_type(hdf5_path)[0].split('/'))
print(mimetypes.guess_type(hdf5_path)[0].split('/')[0])
print(os.path.splitext(hdf5_path))
with h5py.File(hdf5_path, 'r') as hf:
for index in range(len(hf['video'])):
# データセットから指定したインデックスのフレームを読み取る
frame = hf['video'][index]
# OpenCVを使って画像を表示
cv2.imshow('Frame', frame)
key = cv2.waitKey(0)
if key == 27: # ESC
break
cv2.destroyAllWindows()
# 使用例
hdf5_path = 'test.h5'
display_frame_from_hdf5(hdf5_path)