目次へのリンク
概要
MATLABによる動画処理のワークフローについて紹介します。
動画を逐次読み込みながらストリーミング処理が実現できます。
初期化
code
clear; clc; close all; imtool close all
動画の読み出し、表示、書き出し用オブジェクト
動画の読込み・表示・書出し 用のシステムオブジェクトを定義します。
code
% 動画の読み込み
vidReader = vision.VideoFileReader('tilted_face.avi', 'VideoOutputDataType','uint8');
% 表示
vidPlayer = vision.DeployableVideoPlayer;
% 書き出し (FileFormatでMJ2000やMPEG4も選択可能)
vidWriter = vision.VideoFileWriter('tmp_myFile.avi');
顔検出器を定義
code
faceDetector = vision.CascadeObjectDetector();
1フレームずつ順に処理
code
while ~isDone(vidReader)
I = step(vidReader); % 1フレーム 読込み
%
% ここに各種画像処理・解析 のコードを挿入 −−−−−−−−−
%
% 顔検出
bbox = step(faceDetector, I);
% 画像に追加
Iout = insertObjectAnnotation(I,'rectangle',bbox,'Face');
step(vidPlayer, Iout); % 1フレーム 表示
step(vidWriter, Iout); % 1フレーム 書出し
end
生成したシステムオブジェクトをリリース
code
release(vidReader);
release(vidPlayer);
release(vidWriter);
外部プログラムで動画の表示
code
winopen('tmp_myFile.avi')
まとめ
MATLABによる動画処理のワークフローをご紹介しました。
基本的に1枚ずつ画像を読み出して処理するので静止画の処理と大きくは変わりません。
参考
謝辞
本記事は @eigs さんのlivescript2markdownを使わせていただいてます。