Duanxx的Opencv学习:将视频转换为图片

这里读取一个视频,然后将视频的每一帧都保存为png格式的图片,

本文的代码下载

这里首先要解决的问题是为图片按下标生成名字:

这个函数输入的是对视频中的图像帧的计数,输出的是文件的名字,以png格式保存

名字示例:f00005.png

string nameGenerate(unsigned int frameCounter)
{
	unsigned int num = num2str1(frameCounter).length();///<获得数字的位数

	assert(num <= 5);///<数值不能大于5位

	string temp = ".\\image\\f";///<保存在./image文件夹下面,文件名前缀为f
	for (int i = 0;i < 5 - num;i++)
	{
		temp+="0";///<前面补零
	}
	temp+=num2str1(frameCounter) + ".png";///<加上png文件名
	return temp;
}

将视频转换为图片的主要代码:

	///<选择读取用的视频
	VideoCapture video(video_file_07);
	if (!video.isOpened())
	{
		cout<<"open failed!"<<endl;
		return -1;
	}

	///< 获得视频的部分参数
	int width = 0, height = 0, fps = 0, fourcc = 0;
	width = static_cast<int>(video.get(CV_CAP_PROP_FRAME_WIDTH));
	height = static_cast<int>(video.get(CV_CAP_PROP_FRAME_HEIGHT));
	fps = static_cast<int>(video.get(CV_CAP_PROP_FPS));
	fourcc = static_cast<int>(video.get(CV_CAP_PROP_FOURCC));

	cout << "Input video: (" << width << "x" << height << ") at " << fps << ", fourcc = " << fourcc << endl;

	Mat frame;

	int frameCounter = 0;

	//creatWindow(windows_name_original,frame,100,100);

	namedWindow(windows_name_original);

	while (1)
	{
		video>>frame;///<从视频中读取帧图像
		if (frame.empty())///<图像非空,就继续操作
		{
			break;
		}

		imshow(windows_name_original,frame);///<显示图像

		imwrite(nameGenerate(frameCounter),frame);///<将图像保存

		cout<<nameGenerate(frameCounter)<<endl;///<控制台输出已经保存了的图像

		waitKey(10);///<这个必须要,否则会出现图像无法显示的现象

		///<如果达到指定的帧数,停止读取
		if (frameCounter == 405)
		{
			break;
		}

		frameCounter++;
	}
时间: 2024-10-26 21:09:01

Duanxx的Opencv学习:将视频转换为图片的相关文章

OpenCV视频读取播放,视频转换为图片

转载请注明出处!!! http://blog.csdn.net/zhonghuan1992 OpenCV视频读取播放,视频转换为图片 介绍几个有关视频读取的函数: VideoCapture::VideoCapture VideoCapture能够从文件里或者摄像头中读取视频,这是提供给C++的接口的.C的接口是CvCapture结构.        <span style="white-space:pre"> </span>C++: VideoCapture::

Duanxx的OpenCV学习:图片转化为视频

前面我说明了一下Opencv的视频转图片的方式和代码,这次要说明的是Opencv如何将图片转化为视频: 本文完整代码下载 1 VideoWriter说明 这里主要用到的是Opencv里的一个类:VideoWriter 其API参考链接:API链接. 函数原型: VideoWriter::VideoWriter(const string& filename, int fourcc, double fps, Size frameSize, bool isColor=true) 参数说明: filen

opencv学习- - -播放视频

#include <opencv2\opencv.hpp> using namespace cv; int main( ) { //[1]读入视频 VideoCapture capture("1.avi"); //[2]循环显示每一帧 while(1) { Mat frame;//定义一个Mat变量,用于存储每一帧的图像 capture>>frame; //读取当前帧 imshow("读取视频",frame); //显示当前帧 waitKey

Duanxx的C++学习 : 数字转换为String

这里给出了两种数字转换为String的方式,第一种需要包含头文件:sstream string num2str1(unsigned int num) { stringstream ss; ss<<num; return ss.str(); } string num2str2(unsigned int num) { char str_[10]; sprintf_s(str_,"%d",num); string str = str_; return str; }

OpenCV 视频与图片序列相互转换

我们在计算机视觉相关的实验中都需要视频与图片序列之间相互转换,在平时的实验中,经常需要将视频保存为一帧一帧的图片,以获取实验结果:另一方面,很多标准的算法测试数据库都是图片序列(文件名以帧号+图片扩展名),我们可能需要将其转换为视频,因此视频与图片之间的转换是很常见的操作.在网上找到比较好的测试程序,一方面将其封装为函数,方便调用:另一方面,视频转图片可以任意设定图片输出目录,函数会自动创建相关目录:图片序列转视频可以设定更多的参数,也就可以更好的控制,而且可以自行设定视频输出的目录,函数自动检

EmguCV学习——视频与图片互转

其实视频转图片在上篇文章中已经有些眉目了,其实就是按帧读取视频,然后把帧保存就ok.然后自己再加个进度条美化一下...这代码简单易懂,还是直接上代码吧. 视频转图片 1 /// <summary> 2 /// 视频转换为图片 3 /// </summary> 4 /// <param name="path"></param> 5 public void Video2Image(object path) 6 { 7 try 8 { 9 //

基础学习笔记之opencv(6):实现将图片生成视频

基础学习笔记之opencv(6):实现将图片生成视频 在做实验的过程中.难免会读视频中的图片用来处理,相反将处理好的图片又整理输出为一个视频文件也是非经常常使用的. 以下就来讲讲基于opencv的C++版本号中图片输出视频是怎么实现的. 本次试验的数据为摇摆的树枝树叶图片,Waving Trees,其来源网址为: http://research.microsoft.com/en-us/um/people/jckrumm/WallFlower/TestImages.ht 该数据全由bmp图片组成.

在opencv下读取视频保存为图片

VideoCapture capture; capture.open("D:\\car.avi");//读取视频 对于视频下一帧的读取: capture>>frameImg;//读取视频流下一帧控制,字符重载 对于视频的图片保存 std::stringstream ss;//存储图片路径保存信息 ss<<"D:/output/image_"<<setfill('0')<<setw(3)<<(nCount-1

Opencv 学习资料集合(更新中。。。)

基础学习笔记之opencv(24):imwrite函数的使用 tornadomeet 2012-12-26 16:36 阅读:13258 评论:9 基础学习笔记之opencv(23):OpenCV坐标体系的初步认识 tornadomeet 2012-12-12 00:25 阅读:3803 评论:3 基础学习笔记之opencv(22):learning OpenCV书中一个连通域处理函数 tornadomeet 2012-12-11 21:08 阅读:4913 评论:4 基础学习笔记之opencv