I have 2000 TIF images and I want to create a video with these images. I want to draw three horizontal lines and write some text that appears in all the frames of the video. Any help on how to do this?

 採用された回答

darova
darova 2019 年 8 月 27 日

0 投票

Look for VideoWriter

8 件のコメント

Tomer
Tomer 2019 年 8 月 31 日
I loked at it and didn't succeed. Can you help me with the code? I want to create a video of 1000 TIFF images which are in a folder (the names of the images are F_001, F_002....,F_1000). I want to make a video with these images and want to add 3 horizontal lines at different positions.
darova
darova 2019 年 8 月 31 日
Sure, here is an example
clc,clear
aviobj = VideoWriter('test.avi');
aviobj.FrameRate = 1; % frames per second (speed)
open(aviobj);
for i = 1 : 6
I = imread([num2str(i), 'Untitled.png']); % read image
imshow(I) % show image
M = getframe;
writeVideo(aviobj,M); % add frame to video
% pause(1);
end
% get(aviobj)
close(aviobj);
I also attached images i used and video i get
Tomer
Tomer 2019 年 8 月 31 日
編集済み: Tomer 2019 年 8 月 31 日
I have used your code with its path in the same folder in which, the images are located. The names of images are like F_001, F_002, .......F_2000. Unfortunately, it doesn't work and it creates a video file without any F series images. I don't know much about MATLAB. I think, I am making some mistake. Could you please help me rectifying it.
darova
darova 2019 年 8 月 31 日
Try
[h,w] = size(I);
imshow(I)
hold on
plot([0 w], [h h]*1/4,'r'); % add line at height (1/4)*h
plot([0 w], [h h]*2/4,'r');
plot([0 w], [h h]*3/4,'r');
text(w/2,h/2,'SOME TEXT')
hold off
darova
darova 2019 年 8 月 31 日
Can you please show the script you used? What did you change?
Tomer
Tomer 2019 年 9 月 1 日
clc;clear all;
Images=dir('M:\Fish_Video\cam1\*.tif');
outDirectory='M:\Fish_Video\cam1_horizontal lines\';
aviobj = VideoWriter('test.avi');
aviobj.FrameRate = 1; % frames per second (speed)
open(aviobj);
for i = 1 : 100
I = imread([num2str(i), 'F.tif']); % read image
imshow(I) % show image
M = getframe;
writeVideo(aviobj,M); % add frame to video
% pause(1);
end
% get(aviobj)
close(aviobj);
darova
darova 2019 年 9 月 1 日
You said that your images are: F_001, F_002, .......F_2000
This line means: 1F.tif, 2F.tif, ... 100F.tif
I = imread([num2str(i), 'F.tif']); % read image
Use this line
s = sprintf('%04dF.tif',i);
I = imread(s);
Show the error occurs
darova
darova 2019 年 9 月 8 日
How it is going. Did this help?

サインインしてコメントする。

その他の回答 (0 件)

質問済み:

2019 年 8 月 27 日

コメント済み:

2019 年 9 月 8 日

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by