使用matlab在视频序列上画多个矩形框,矩形框的坐标是txt文件,含有多个txt文件,txt文件里面格式是xywh,每一行对应一帧图像画矩形框,并保存成图片的具体代码
时间: 2023-05-11 08:03:22 浏览: 95
以下是使用 MATLAB 在视频序列上画多个矩形框的代码:
```matlab
% 读取 txt 文件
txt_files = dir('*.txt');
for i = 1:length(txt_files)
txt_file = txt_files(i).name;
bbox = load(txt_file); % bbox 是一个 n x 4 的矩阵,每一行对应一个矩形框的 xywh 坐标
video_file = strrep(txt_file, '.txt', '.avi');
video = VideoReader(video_file);
num_frames = video.NumFrames;
% 逐帧画矩形框
for j = 1:num_frames
frame = read(video, j);
imshow(frame);
hold on;
for k = 1:size(bbox, 1)
x = bbox(k, 1);
y = bbox(k, 2);
w = bbox(k, 3);
h = bbox(k, 4);
rectangle('Position', [x, y, w, h], 'EdgeColor', 'r', 'LineWidth', 2);
end
hold off;
% 保存图片
output_file = sprintf('%s_%04d.jpg', strrep(txt_file, '.txt', ''), j);
imwrite(frame, output_file);
end
end
```
这段代码会读取当前目录下所有的 txt 文件,每个 txt 文件对应一个视频文件,然后逐帧读取视频文件,画出矩形框,并保存成图片。
阅读全文