動画ファイルを画像ファイルに

32 views (last 30 days)
大空
大空 on 9 Jul 2022
Answered: Atsushi Ueno on 9 Jul 2022
ディープラーニングによる画像分類ををしたいです。動画を撮影しそれを画像ファイルに変換したいと考えています。現在困っていることがファイル内に入っている複数の動画をまとめて画像変換したいのですがどのように行えばよろしいでしょうか。
  2 Comments
Atsushi Ueno
Atsushi Ueno on 9 Jul 2022
「ファイル内に入っている複数の動画」とは具体的に何ですか?
  • 1つの動画ファイル内に入っている複数の画像フレーム
  • 1つのフォルダに入っている複数の動画ファイルのフレーム
大空
大空 on 9 Jul 2022
1つのフォルダに入っている複数の動画ファイルのフレームです。
ファイル内に更に複数のファイルに分けてありその中にまた複数の動画が入ってるといった形です。 https://jp.mathworks.com/help/matlab/import_export/convert-between-image-sequences-and-video.html
このサイトは見たのですがわからなく

Sign in to comment.

Accepted Answer

Atsushi Ueno
Atsushi Ueno on 9 Jul 2022
上記の掲載プログラムを改造しました。やっている事は下記の通りです。
  • 冒頭で親フォルダ(動画ファイルが入っているフォルダの親)を選択する
  • 上記フォルダ下の拡張子が .mp4 の動画ファイルをデータストアに格納
  • readall関数で全ての動画ファイルを処理する。
  • ファイル データを読み取る関数’ReadFcn’内で下記処理を行う
  • ・動画ファイルをVideoReader関数で読み込む
  • ・現在のフォルダに動画ファイル名と同名のフォルダを作成しそこに移動する
  • ・全ての動画フレームを画像ファイル001.jpg~として上記フォルダ内に保存する
注:必要に応じて拡張子やフォルダ構成を変更してください
selpath = uigetdir(matlabroot,'MATLAB Root Folder'); % 親フォルダを選択する
fds = fileDatastore(selpath,'ReadFcn',@myread,'FileExtensions','.mp4');
data = readall(fds);
function ii = myread(file)
Video = VideoReader(file);
ii = 1;
mkdir(Video.Name);
cd(Video.Name);
while hasFrame(Video)
img = readFrame(Video);
filename = [sprintf('%03d',ii) '.jpg'];
imwrite(img,filename) % Write out to a JPEG file (img1.jpg, img2.jpg, etc.)
ii = ii+1;
end
cd ..
end

More Answers (0)

Products


Release

R2022a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!