2016-06-23 8 views
0

私はMatlabで25秒間のビデオファイルを読み込み、parforを使って並列処理しようとしています。私はそれを5秒の短いビデオに分割しようとしています。それぞれの長さは5秒です。 -ビデオファイルを並列に処理する

mov = VideoReader('movie.avi'); 

parfor i=1:5 

    vd(i)=read(mov,[(i-1)*5+1, (i)*5]); 
    current_frame=0; 
    while hasFrame(vd(i)) 
     current_frame=current_frame+1;    
     vidFrame = readFrame(vd(i)); 
     fprintf('%d part, frame no %d\n',i,current_frame); 
    end 
end 

私はparforループの最初の行にこのエラーが表示されます。

添字割り当て寸法の不一致

はどのようにして、フレーム変数vdに読み込む機能から来ているものを取得していますか?

答えて

1

あなたはスカラー(vd(i))であるものに何かthat is not a scalarread(mov, [start, stop]))を格納しようとしています。 vdをセル配列にして、各要素が任意のサイズ/次元のものを保持できるようにしたいと思うでしょう。

vd{k} = read(mov, [(k-1)*5+1, (k)*5]); 
+0

ありがとうございます!私は問題が何かを知っていたが、私は最初の3次元としてコロンを追加してrgb値に対応しようとし続けた。とにかく、これは解決しましたが、今私は次の問題に直面しています: - 'hasFrame'のワーカーにUndefinedFunctionエラーがスローされました。これは、 'hasFrame'を含むファイル にワーカーがアクセスできないためです。 addAttachedFiles(プール、ファイル)を使用して、添付する添付ファイル を指定します。詳細は の詳細については、 'parallel.Pool/addAttachedFiles'のドキュメントを参照してください。それについてのアイデアか、私はこれについて新しい質問をするべきですか? –

+1

@ChintanTrivedi 'read'の出力は' VideoReader'オブジェクトではないため、 'hasFrame'メソッドはありません。あなたは単に出力が*どのように見えるかを判断し、それをループしたいでしょう。 – Suever