2016-07-12 2 views
-1

ビデオフレームのスクリーングラブを取って、各フレームをデスクトップのフォルダにイメージとして保存します。ただし、キャプチャしたいフレームはテキスト文書に書かれています。抽出したビデオフレームを画像として保存する

私の質問は、このテキストドキュメントに格納されているフレーム番号を読み込み、これらのフレームのみをpngファイルに抽出する方法です。

ご協力いただきありがとうございます。私が何かを明確にする必要がある場合は、質問してください。

frames = dlmread('Frames.txt'); 

%getting no of frames 
numFrames = mov.NumberOfFrames; 

%setting current status of number of frames written to zero 
numFramesWritten = 0; 

for t = frames: numFrames 
    currFrame = read(mov, t); %reading individual frames 
    opBaseFileName = sprintf('%3.3d.png', t); 
    opFullFileName = fullfile(opFolder, opBaseFileName); 
    imwrite(currFrame, opFullFileName, 'png'); %saving as 'png' file 
    progIndication = sprintf('Wrote frame %4d of %d.', t, numFrames); 
    disp(progIndication); 
    numFramesWritten = numFramesWritten + 1; 
end 
+0

を変更すると仮定?テキスト文書の形式は何ですか? – hbaderts

+0

私が修正しようとしているコードは、すべてのフレームをpngファイルとして抽出するforループです。私は上記の私の質問のボディにそれを追加します。テキスト文書は単純に1列の数字です。私はテキスト文書の最初の数字で始まるように抽出を得ることができますが、その上に1つずつインクリメントします。私はこれらの数字を正しく実行する方法が不明です。 –

答えて

0

私が正しくあなたの質問を理解していれば:

...私はこのテキスト ドキュメントに保存されているフレーム番号を読み込み、唯一のPNGファイルにこれらのフレームを抽出する方法を教えてください。

と「フレーム」は、あなたがしたいフレームのなインデックスのサブセットを含むベクターである、そして、あなたがする必要があるすべてはあなたがすでに何のコードを持っていないループの

for t = frames 
+0

これを試すと、次のエラーが発生します。 "フレーム範囲は、最初の値が2番目の値以下のフレームインデックスの1x2ベクトルである必要があります。 フレームインデックスは、ファイル内のフレーム数よりも多いか等しい。 フレームは、クラスが2倍であるため、Matlabのチェックイン時に問題がありますか?ありがとう。 –

+0

どのラインでエラーが出るのですか? –

+0

これは、ビデオを読むときに発生します。 'currFrame = read(mov、t);' –

関連する問題