圖片轉換視頻/視頻轉換圖片代碼

%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的視頻文件。
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章