视频与图像之间互转

182 阅读1分钟

一.视频转图像(avi2img)

1.1 读取视频文件
1.2 获取视频总的帧数
1.3 若每一帧为彩色图片,转换为灰度图(可有可无)
1.4 存到指定地点

%将视频转换为单张图片
clear
clc
file_name = '.\input.avi';        %视频所在文件夹
obj = VideoReader(file_name);     %读取视频文件

numFrames = obj.NumberOfFrames;   %视频总的帧数 
for k = 1: numFrames
    frame = read(obj,k);
    %imshow(frame);                
    gray_frame = rgb2gray(frame); %若每一帧为彩色图片,转换为灰度图
    %imshow(frame);                %显示每一帧图片
    %保存每一帧图片
    imwrite(gray_frame,strcat('.\img\',num2str(k),'.jpg'),'jpg');
end

二.图像合成视频(img2avi)

2.1 读取所有jpg文件
2.2 获取图片总数
2.3 命名所转换成的视频名称 2.4 记录视频帧数 2.5 将单张图片存在avi文件

%将所有单帧图片转换为视频
DIR='D:\campus\';        %图片所在文件夹
file=dir(strcat(DIR,'*.jpg'));                %读取所有jpg文件
filenum=size(file,1);                         %图片总数

obj_gray = VideoWriter('highway_gray.avi');   %所转换成的视频名称
writerFrames = filenum;                       %视频帧数

%将单张图片存在avi文件
open(obj_gray);
for k = 1: writerFrames
    fname = strcat(DIR, num2str(k), '.jpg');
    frame = imread(fname);
    writeVideo(obj_gray, frame);
end
close(obj_gray);