您好,登錄后才能下訂單哦!
這篇文章主要介紹“Matlab如何實(shí)現(xiàn)將圖像序列合并為視頻”的相關(guān)知識,小編通過實(shí)際案例向大家展示操作過程,操作方法簡單快捷,實(shí)用性強(qiáng),希望這篇“Matlab如何實(shí)現(xiàn)將圖像序列合并為視頻”文章能幫助大家解決問題。
MATLAB是一種高性能語言,用于操縱矩陣、執(zhí)行技術(shù)計(jì)算、繪圖等。它代表矩陣實(shí)驗(yàn)室。借助這個(gè)軟件,我們可以從圖像中創(chuàng)建視頻。
以下代碼適合序列圖像名稱為1、2、3、4、5等名稱的圖片。
videoname='VBRPCA_qj'; % 待生成的視頻文件名 myfilepath='C:\Users\xiaomao\Desktop\ys_hb\' % 待合成的圖片存放路徑,需根據(jù)實(shí)際修改 WriterObj = VideoWriter([videoname,'.avi']); % 設(shè)置待合成的視頻(不僅限于avi格式)名稱 WriterObj.FrameRate = 10; % 設(shè)置每秒幀數(shù) open(WriterObj); filepath = dir([myfilepath,'*.jpg']); % 獲取路徑myfilepath文件夾中所有png的文件結(jié)構(gòu)體 for k = 1:length(filepath) frame=imread([filepath(k).folder,'\', strcat(num2str(k-1), '.jpg')]); % 遍歷讀取圖像,放在變量frame中 writeVideo(WriterObj,frame); % 將frame放到變量WriterObj中 end close(WriterObj); fprintf([videoname,'.avi','制作成功\n'])
以下代碼適合圖片名稱為,001、002、003等名稱的圖片。
videoname='VBRPCA_qj'; % 待生成的視頻文件名 myfilepath='D:\test\' % 待合成的圖片存放路徑,需根據(jù)實(shí)際修改 WriterObj = VideoWriter([videoname,'.avi']); % 設(shè)置待合成的視頻(不僅限于avi格式)名稱 WriterObj.FrameRate = 10; % 設(shè)置每秒幀數(shù) open(WriterObj); filepath = dir([myfilepath,'*.png']); % 獲取路徑myfilepath文件夾中所有png的文件結(jié)構(gòu)體 for k = 1:length(filepath) frame=imread([filepath(k).folder,'\',filepath(k).name]); % 遍歷讀取圖像,放在變量frame中 writeVideo(WriterObj,frame); % 將frame放到變量WriterObj中 end close(WriterObj); fprintf([videoname,'.avi','制作成功\n'])
上面兩段代碼的主要區(qū)別就是for循環(huán)里面的文件路徑的組織方式不同。
MATLAB提供了一個(gè)專門的函數(shù)來建立元胞數(shù)組,即cell函數(shù)。cell函數(shù)用于創(chuàng)建一維、二維或者多維空元胞數(shù)組。
photos = cell(3,1); photos{1} = imread('image1.png'); photos{2} = imread('image2.png'); photos{3} = imread('image3.png'); % 創(chuàng)建每秒1幀的視頻文件 videofile = VideoWriter('output.mp4','MPEG-4'); videofile.FrameRate = 1; % 設(shè)置每個(gè)圖像的秒數(shù) secperImg = [2 3 4]; % 打開視頻文件 open(videofile); % 將幀寫入視頻 for i=1:length(photos) % convert the image to a frame frame = im2frame(photos{i}); for v=1:secperImg(i) writeVideo(videofile, frame); end end % 關(guān)閉視頻文件 close(videofile);
fileName = 'MVI_1264_clip.avi\'; obj = VideoReader(fileName); numFrames = obj.NumberOfFrames;% 幀的總數(shù) for k = 1 : numFrames% 讀取數(shù)據(jù) frame = read(obj,k); imshow(frame);%顯示幀 imwrite(frame,strcat(num2str(k),\'.jpg\'),\'jpg\');% 保存幀 end
如果是mat格式文件,load加載即可。
關(guān)于“Matlab如何實(shí)現(xiàn)將圖像序列合并為視頻”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識,可以關(guān)注億速云行業(yè)資訊頻道,小編每天都會為大家更新不同的知識點(diǎn)。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。