Opencv中将视频保存为连续的图片和连续的图片保存为视频
2014-02-27 20:26
465 查看
转自http://blog.sina.com.cn/s/blog_6111ce890100q3i0.html
#include <stdlib.h> #include <stdio.h> #include <math.h> #include <cv.h> #include <highgui.h> #define NUM_FRAME 5 //只处理前300帧,根据视频帧数可修改 void Video_to_image(char* filename) { printf("------------- video to image ... ----------------n"); //初始化一个视频文件捕捉器 CvCapture* capture = cvCaptureFromAVI(filename); //获取视频信息 cvQueryFrame(capture); int frameH = (int) cvGetCaptureProperty(capture, CV_CAP_PROP_FRAME_HEIGHT); int frameW = (int) cvGetCaptureProperty(capture, CV_CAP_PROP_FRAME_WIDTH); int fps = (int) cvGetCaptureProperty(capture, CV_CAP_PROP_FPS); int numFrames = (int) cvGetCaptureProperty(capture, CV_CAP_PROP_FRAME_COUNT); printf("tvideo height : %dntvideo width : %dntfps : %dntframe numbers : %dn", frameH, frameW, fps, numFrames); //定义和初始化变量 int i = 0; IplImage* img = 0; char image_name[13]; cvNamedWindow( "mainWin", CV_WINDOW_AUTOSIZE ); //读取和显示 while(1) { img = cvQueryFrame(capture); //获取一帧图片 cvShowImage( "mainWin", img ); //将其显示 char key = cvWaitKey(20); sprintf(image_name, "%s%d%s", "image", ++i, ".jpg");//保存的图片名 cvSaveImage( image_name, img); //保存一帧图片 if(i == NUM_FRAME) break; } cvReleaseCapture(&capture); cvDestroyWindow("mainWin"); } void Image_to_video() { int i = 0; IplImage* img = 0; char image_name[13]; printf("------------- image to video ... ----------------n"); //初始化视频编写器,参数根据实际视频文件修改 CvVideoWriter *writer = 0; int isColor = 1; int fps = 30; // or 25 int frameW = 400; // 744 for firewire cameras int frameH = 240; // 480 for firewire cameras writer=cvCreateVideoWriter("out.avi",CV_FOURCC('X','V','I','D'),fps,cvSize(frameW,frameH),isColor); printf("tvideo height : %dntvideo width : %dntfps : %dn", frameH, frameW, fps); //创建窗口 cvNamedWindow( "mainWin", CV_WINDOW_AUTOSIZE ); while(i<NUM_FRAME) { sprintf(image_name, "%s%d%s", "image", ++i, ".jpg"); img = cvLoadImage(image_name); if(!img) { printf("Could not load image file...n"); exit(0); } cvShowImage("mainWin", img); char key = cvWaitKey(20); cvWriteFrame(writer, img); } cvReleaseVideoWriter(&writer); cvDestroyWindow("mainWin"); } int main(int argc, char *argv[]) { char filename[13] = "t.flv"; Video_to_image(filename); //视频转图片 return 0; }
相关文章推荐
- Opencv中将视频保存为连续的图片和连续的图片保存为视频
- Opencv中将视频保存为连续的图片和连续的图片保存为视频
- Opencv中将视频保存为连续的图片和连续的图片保存为视频
- OpenCV中将视频保存为连续的图片和连续的图片保存为视频
- Opencv中将视频保存为连续的图片和连续的图片保存为视频
- Opencv中将视频保存为连续的图片和连续的图片保存为视频
- 用opencv抽取视频的帧并保存为连续的图片
- 用opencv将连续编号的图片保存为avi视频 【有问题,如果你看到,请指教~】
- 用opencv抽取视频的帧并保存为连续的图片
- 用opencv抽取视频的帧并保存为连续的图片
- (转)OpenCV提取视频每一帧及将连续图片合成视频
- 通过OPENCV从视频中获取图片并保存
- OpenCV读取视频流转至图片序列保存
- opencv2读取视频提取ROI区域并把ROI区域保存为图片
- Opencv连续读取文件夹图片做处理并保存
- opencv将视频读到的帧保存成图片
- javacpp-opencv图像处理之1:实时视频添加文字水印并截取视频图像保存成图片,实现文字水印的字体、位置、大小、粗度、翻转、平滑等操作
- OpenCV摄像头获取视频并实时保存每帧图片
- opencv摄像头视频+帧保存为图片
- Opencv中将图片的像素值保存到vector容器中,并保存为文本文档