前言
MATLAB进行图像处理相关的学习是非常友好的,可以从零开始,对基础的图像处理都已经有了封装好的许多可直接调用的函数,这个系列文章的话主要就是介绍一些大家在MATLAB中常用一些概念函数进行例程演示!
有时为了展示需要,要将一系列格式和大小一致的图片合成为一个视频,也有需要将一段视频进行分帧处理进行目标检测等需求,这里介绍一下图像序列合成视频与视频分帧在MATLAB中的实现。
一. MATLAB仿真-序列合成
% 将图像序列合成为一段视频(得到运动序列视频)
% date:2022-4-24 23:45:24
% author:C.S
clear all;
close all;
clc;
aviobj1 = VideoWriter('testvideo.avi');
open(aviobj1);
for i= 1:2000 %2000为图像序列总数
x = int2str(i);
str = strcat('G:/Final/img_',x,'.bmp');%图片路径,建议先将图像全部按顺序进行命名
picdata = imread(str);
writeVideo(aviobj1,picdata);
end
close(aviobj1);
二. MATLAB仿真-视频分帧
% 将一段视频分帧保存成图像序列
% date:2022-4-24 23:45:24
% author:C.S
clear all;
close all;
clc;
%打开视频文件
[filename,pathname]=uigetfile('*.avi;*.mp4;*.mkv','select the file');
filenameVIDEO = [pathname,filename];
video = VideoReader(filenameVIDEO);
nFrame = video.NumberOfFrame;
for k = 1:nFrame
framenow = read(video,k);
img1=mat2gray(framenow);
filename1 = ['G:/imagefile/img1_',num2str(Fr),'.bmp'];
imwrite(img1,filename1,'bmp');
end
三. 小结
序列合成视频与视频分帧都是在进行图像处理的基本操作,根据不同需要对序列和图像进行处理,主要是为了应对不同工程或者算法对数据入口的需求,一些封装好的开源工具一般对数据输入都有了自己的规则,所以需要进行统一处理。每天学一个MATLAB小知识,大家一起来学习进步阿!
|