0
点赞
收藏
分享

微信扫一扫

MATLAB小技巧(9) 图片合成视频与视频分帧

MATLAB小技巧(9)图片合成视频与视频分帧

前言

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小知识,大家一起来学习进步阿!

举报

相关推荐

0 条评论