图片转换视频/视频转换图片代码

%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的视频文件。
}

猜你喜欢

转载自blog.csdn.net/lidawei0124/article/details/85047799