帧必须是1464 × 834,但是为什么呢?

22次浏览(最近30天)
默罕默德·瓦哈卜
默罕默德·瓦哈卜 2021年4月21日
你好,
我正在制作一个视频从图像,但我得到的错误,我不知道如何处理。谁能帮帮我。
代码:
imgFiles = dir (‘* . jpg”);
N = length(imgFiles);
%创建1帧每秒的视频写入器
writerObj = VideoWriter (“myVideo.avi”);
% writerObj。帧速率= 10;
打开录像机
打开(writerObj);
%将帧写入视频
i = 1: N
img = imgFiles(i).name;
I = imread(img);
imshow(我);
F = getframe(gcf);
writeVideo (writerObj F);
结束
关闭写入器对象
关闭(writerObj);
错误:
使用VideoWriter/writeVideo时出错(第368行)
帧必须是1464 × 834
frameestovideo错误(第21行)
writeVideo (writerObj F);

接受的答案

默罕默德·萨米
默罕默德·萨米 2021年4月26日
在这种情况下,您可以尝试直接将图像写入视频,而不是使用带有imshow的getFrame。
imgFiles = dir (‘* . jpg”);
N = length(imgFiles);
%创建1帧每秒的视频写入器
writerObj = VideoWriter (“myVideo.avi”);
% writerObj。帧速率= 10;
打开录像机
打开(writerObj);
%将帧写入视频
i = 1: N
img = imgFiles(i).name;
I = imread(img);
writeVideo (writerObj,我);
结束
关闭写入器对象
关闭(writerObj);
1评论
沃尔特·罗伯森
沃尔特·罗伯森 2021年4月26日
是的,没错。当使用getframe()时,即使绘制相同数量的数据,也不会总是返回完全相同大小的帧。根据所使用的数据坐标的绝对值,帧大小可以在比正常范围窄2像素到比正常范围宽3像素之间变化——这可能与轴上最后一个文本标签的确切宽度相关(比例宽度字体)。
在实用的情况下,直接从矩阵写到文件更好。

登录评论。

答案(1)

默罕默德·萨米
默罕默德·萨米 2021年4月21日
编辑:默罕默德·萨米 2021年4月21日
视频帧大小由您编写的第一帧设置。从文档。
writeVideo方法根据第一帧的尺寸设置Height和Width的值。
如果你的图像大小不一样,你将不得不使用imresize功能来调整它们到所需的大小。
1评论
默罕默德·瓦哈卜
默罕默德·瓦哈卜 2021年4月21日
嗨,Sami,这就是问题所在,文件夹中的所有图像都是相同的尺寸1280x720,但我仍然得到这个错误。

登录评论。

社区寻宝

在MATLAB中心找到宝藏,并发现社区如何可以帮助你!

开始狩猎!