Matlab добавить текст с imread - PullRequest
3 голосов
/ 07 ноября 2019

У меня есть серия изображений, с помощью которых я создаю цикл фильма. Код выглядит следующим образом:

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);

Я хотел бы добавить текст на основе созданной переменной 'time', которая представляет собой просто строку 'YYYYMMDD-HHMMSS'. Я знаю, что это можно сделать с помощью:

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

, но если поместить его в цикл выше, он просто создает новую фигуру с текстом, а не встраивает ее в изображение.

ПоэтомуКак добавить текст в изображение и включить его в цикл фильма? ПРИМЕЧАНИЕ. У меня нет доступа к панели инструментов системы Computer Vision (поэтому я не могу использовать функцию «insertText»)

1 Ответ

2 голосов
/ 08 ноября 2019

Ваш основной подход верен, но изображение + текст не передается в 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
...