%video to imgs
%matlab
clear
video_path = 'E:\04_BIT_Seeker\01_tracker\01_dataset\tracking_video_from_qihe\';
img_files = [video_path 'car1.mp4'];
S = regexp(img_files, '\.', 'split');
img_dir = char(S{1});
mkdir(img_dir);
% fileName = sort({img_files.name});
obj = VideoReader(img_files);
numFrames = obj.NumberOfFrames;% 幀的總數
str = [];
for k = 1 : numFrames% 讀取數據
frame = read(obj,k);
str = strcat(num2str(k),'.jpg')
% if(k<10)
% str = strcat('000',str);
% elseif(k<100)
% str = strcat('00',str);
% elseif(k<1000)
% str = strcat('0',str);
% end
% imshow(frame);%顯示幀
cd(img_dir)
mkdir('img')
cd ./img
imwrite(frame,str,'jpg');% 保存幀
cd ..
cd ..
end
//imgs to video
//c++
#include<opencv2\opencv.hpp>
#include<iostream>
using namespace std;
using namespace cv;
int main()
{
// 構造一個VideoWriter
VideoWriter video("girl.avi", CV_FOURCC('M', 'J', 'P', 'G'), 25.0, Size(320, 240));
// 從一個文件夾下讀取多張jpg圖片
String pattern = "D:\\AplusFile\\ComputerVision\\IR-Tracking\\trackingimages\\imagecut\\Girl\\img\\*.jpg";
vector<String> fn;
glob(pattern, fn, false);
size_t count = fn.size();
cout << "開始處理!" << endl;
for (size_t i = 0; i < count; i++)
{
Mat image = imread(fn[i]);
// 這個大小與VideoWriter構造函數中的大小一致。
resize(image, image, Size(320, 240));
printf("%d\n", i);
// 流操作符,把圖片傳入視頻
video << image;
}
cout << "處理完畢!" << endl;
// 處理完之後會在得到一個名爲test.avi的視頻文件。
}