2016-09-11 23 views
0

ビデオファイルをグレースケールに変換しようとしています。 Matlabスクリプトを実行しようとすると、「無効なビデオデータ - 数値または論理データ型でなければならない」というメッセージが表示されます。誰かが私が間違っていることで私を助けることができますか?私はまた、MATLABに新しいです。ビデオをmatlabのグレースケールに変換する

filename = 'Project1.m4v'; 
vid = VideoReader(filename); 
newVid = VideoWriter('NewVid'); 

open(newVid); 
numFrames = vid.NumberOfFrames; 
for frame = 1 : numFrames 
    % Extract the frame from the movie structure. 
    thisFrame = read(vid, frame); 
    %Convert each frame to black and white 
    gray = rgb2gray(thisFrame); 
    writeVideo(newVid,gray); 

end 

close(newVid); 

implay(newVid); 
+1

(http://stackoverflow.com/questions/22306581/convert-color-video-to-grayscale-video-in-matlab)MATLABで階調映像をカラー映像に変換]の可能な重複 –

答えて

1

使用implay('NewVid.avi')代わりimplay(newVid);

のコード内の唯一の問題は、最後の行です:implay(newVid);
newVidVideoWriterオブジェクトです。newVid = VideoWriter('NewVid');を使用してオブジェクトを作成します。

私は'NewVid'ファイル名に'.avi'ファイル拡張子を追加することをお勧めいたします:
用途:newVid = VideoWriter('NewVid.avi');

implayは、入力パラメータとしてVideoWriterオブジェクトを取るdoes't。
Matlabワークスペースにエラーメッセージを表示する代わりに、ビデオウィンドウにエラーメッセージを表示します。

あなたがする必要があるのは、最後のコード行をimplay('NewVid.avi')に置き換えることです。

enter image description here

関連する問題