计算机视觉
图像处理

视频到图片序列之间转换

视频分解并保存为图片序列或者将图片序列压缩成视频是非常基本,也非常常用的两个功能,但经常碰到初学者不明白该怎么处理,well,这里给出代码,其余不解释;

void Video2Pic()
{
	cv::VideoCapture vc;
	bool flag = vc.open("G:\\20140524\\S1050003.MP4");
	if (!flag)
	{
		printf("video file open error \n");
		system("pause");
		exit(-1);
	}

	int frmCount = vc.get(CV_CAP_PROP_FRAME_COUNT);
	frmCount -= 5;//个别视频读取到末尾几帧时可能会出错

	char str[256];
	for (int i=0; i<frmCount; i++) { printf("%d/%d \n", i+1, frmCount); cv::Mat img; vc>>img;

		memset(str, '\0', 256*sizeof(char));
		sprintf(str, "./img/%08d.jpg", i);
		cv::imwrite(str, img);
	}
}

void Pic2Video()
{
	cv::VideoWriter vw;
	vw.open("result.avi", CV_FOURCC('X','V','I','D'), 25, cv::Size(1280,720));

	std::vector files;
	ReadDirectory("C:\\Users\\Administrator\\Desktop\\img", ".jpg", files);

	for (int i=0; i<files.size(); i++)
	{
		printf("%d/%d \n", i, files.size());

		cv::Mat img = cv::imread(files[i]);
		if (img.empty())
		{
			printf("img load error, fileName: %s \n", files[i].c_str());
			system("pause");
			exit(-1);
		}

		vw<<img;
	}
}

转载注明来源:CV视觉网 » 视频到图片序列之间转换

分享到:更多 ()
扫描二维码,给作者 打赏
pay_weixinpay_weixin

请选择你看完该文章的感受:

0不错 2超赞 0无聊 0扯淡 0不解 0路过

评论 4

评论前必须登录!