在matlab中将视频转换为灰度

时间:2016-09-11 02:06:44

标签: 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 个答案:

答案 0 :(得分:1)

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

代码中唯一的问题是最后一行:implay(newVid); newVidVideoWriter个对象 - 您可以使用newVid = VideoWriter('NewVid');创建它。

我建议您将'.avi'文件扩展名添加到'NewVid'文件名:
使用:newVid = VideoWriter('NewVid.avi');

implay不会将VideoWriter个对象作为输入参数 它不会在Matlab工作区中显示错误消息,而是在视频窗口中显示错误消息。

您需要做的就是用implay('NewVid.avi')替换最后一行代码。

enter image description here