3

我有一系列图像,我正在创建一个电影循环。代码如下所示:

path1 = '/path/to/data';
dir1 = dir(path1);

writerObj = VideoWriter('video.avi');
writerObj.FrameRate = 10;
writerObj.Quality = 100;
open(writerObj);

for i = 3:length(dir1)
    filename = [path1,'/',dir1(i).name];
    timee= dir2(i).name(29:43);
    thisimage = imread(filename);
    writeVideo(writerObj, thisimage);
end
close(writerObj);

我想根据创建的“时间”变量添加一个文本,它只是一个“YYYYMMDD-HHMMSS”字符串。我知道这可以通过以下方式完成:

imshow(thisimage);
text(300,500,timee, 'Color','white','FontSize',20);

但是当放在上面的循环中时,它只是简单地创建一个带有文本的新图形,而不是将其嵌入到图像中。

因此,如何在图像中添加文本并将其包含在电影循环中?注意:我无权访问计算机视觉系统工具箱(因此,我无法使用“insertText”功能)

4

1 回答 1

2

您的基本方法是正确的,但图像+文本没有传递给 writeVideo。诀窍是用来getframe将其转换为预期的格式。for如下修改你的循环:

for i = 3:length(dir1)
    filename = [path1,'/',dir1(i).name];
    timee= dir2(i).name(29:43);
    thisimage = imread(filename);

    imshow(thisimage);                                  % Load image to figure
    text(300,500,timee, 'Color','white','FontSize',20); % Add text to figure
    writeVideo(writerObj, getframe(gcf));               % Add figure to video
    close(gcf);                                         % Close the figure window
end
于 2019-11-08T00:54:07.657 回答