if文の書き方
이전 댓글 표시
vid0bj = VideoReader('image1-1.avi');
vid0bj.NumFrames
workingDir = tempname;
mkdir(workingDir)
mkdir(workingDir, 'images')
ii = 1;
while hasFrame(vid0bj)
img = readFrame(vid0bj);
filename = [sprintf('%03d', ii) '.jpg'];
fullname = fullfile(workingDir, 'images', filename);
imwrite(img, fullname)
ii = ii+1;
end
imageNames = dir(fullfile(workingDir, 'images', '*.jpg'));
imageNames = {imageNames.name}';
outputVideo = VideoWriter(fullfile(workingDir, 'image1-1kai.avi'));
outputVideo.FrameRate = vid0bj.FrameRate;
open(outputVideo)
for ii = 1:length(imageNames)
img = imread(fullfile(workingDir, 'images', imageNames{ii}));
writeVideo(outputVideo,img)
end
close(outputVideo)
vid0bjavi = VideoReader(fullfile(workingDir, 'image1-1kai.avi'));
ii = 1;
while hasFrame(vid0bjavi)
mov(ii) = im2frame(readFrame(vid0bjavi));
ii = ii+1;
end
figure
imshow(mov(1).cdata, 'Border', 'tight')
movie(mov,1,vid0bjavi.FrameRate)
上記のようなコードを組むと動画ファイルから画像ファイルを作り、画像ファイルから動画ファイルを再び作ることができました。
このimage1-1.aviという動画ファイルのフレーム数は122で、これをだいたい30くらいのフレーム数の動画として新しく作りたいと考えています。画像ファイルを読み込むときに等間隔に4フレームに1回読み込んで30フレームの動画を作りたいのですがどのようにコードを書き換えればよろしいでしょうか?
for ii = 1:length(imageNames)
img = imread(fullfile(workingDir, 'images', imageNames{ii}));
writeVideo(outputVideo,img)
end
自分の考えでは上記の部分をif文を使って条件分岐して作ればいいと考えているのですがその書き方がわかりません。そこも教えていただけると助かります。
채택된 답변
추가 답변 (0개)
카테고리
도움말 센터 및 File Exchange에서 Image Acquisition Support Packages for Hardware Adaptors (Generic Video Interface)에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!