我正在尝试将视频文件转换为灰度。当我尝试运行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);
答案 0 :(得分:1)
使用implay('NewVid.avi')
代替implay(newVid);
代码中唯一的问题是最后一行:implay(newVid);
newVid
是VideoWriter
个对象 - 您可以使用newVid = VideoWriter('NewVid');
创建它。
我建议您将'.avi'
文件扩展名添加到'NewVid'
文件名:
使用:newVid = VideoWriter('NewVid.avi');
implay
不会将VideoWriter
个对象作为输入参数
它不会在Matlab工作区中显示错误消息,而是在视频窗口中显示错误消息。
您需要做的就是用implay('NewVid.avi')
替换最后一行代码。