OpenCV写入AVI视频文件
2015-06-01 21:36
399 查看
本文只是简单的写入AVI视频文件的代码,通过调用cvWriteFrame()逐帧将视频流写入文件。写入结束后,我们调用cvReleaseVideoWriter()来释放资源。这个程序首先打开一个视频文件,读取文件内容,将每一帧图像转换为对数极坐标格式,最后将转化后的图像序列写入新的视频文件中。
初次接触视频编码,现简单介绍一下视频编码:
所谓视频编码方式就是指通过特定的压缩技术,将某个视频格式的文件转换成另一种视频格式文件的方式。视频流传输中最为重要的编解码标准有国际电联的H.261、H.263、H.264,运动静止图像专家组的M-JPEG和国际标准化组织运动图像专家组的MPEG系列标准,此外在互联网上被广泛应用的还有Real-Networks的RealVideo、微软公司的WMV以及Apple公司的QuickTime等。
文章引用:百度百科
http://baike.baidu.com/link?url=9o3OWcVriiyEwLdIiIspcGbT_aAZ-Po2nmy2S1-kQUBEPP2FiqMjHN14KWKQe8V6e3g0n3kCMrzt2AB-O1j9_q
#include "cv.h" #include "highgui.h" #include <stdio.h> // Convert a video to grayscale // argv[1]: input video file // argv[2]: name of new output file // //#define NOWRITE 1; //Turn this on (removed the first comment out "//" if you can't write on linux void main( ) { cvNamedWindow( "Example2_10", CV_WINDOW_AUTOSIZE ); cvNamedWindow( "Log_Polar", CV_WINDOW_AUTOSIZE ); CvCapture* capture = cvCreateFileCapture("G:/数据/OpenCV数据/song.mp4" ); //if (!capture){ // return -1; //} IplImage* bgr_frame; double fps = cvGetCaptureProperty ( capture, CV_CAP_PROP_FPS ); printf("fps=%d\n",(int)fps); CvSize size = cvSize( (int)cvGetCaptureProperty( capture, CV_CAP_PROP_FRAME_WIDTH), (int)cvGetCaptureProperty( capture, CV_CAP_PROP_FRAME_HEIGHT) ); printf("frame (w, h) = (%d, %d)\n",size.width,size.height); #ifndef NOWRITE CvVideoWriter* writer = cvCreateVideoWriter( "G:/数据/OpenCV数据/wind2.avi", CV_FOURCC('M','J','P','G'), fps, size ); #endif IplImage* logpolar_frame = cvCreateImage( size, IPL_DEPTH_8U, 3 ); IplImage* gray_frame = cvCreateImage( size, IPL_DEPTH_8U, 1 ); while( (bgr_frame=cvQueryFrame(capture)) != NULL ) { cvShowImage( "Example2_10", bgr_frame ); //We never make use of this gray image cvConvertImage( bgr_frame, gray_frame, CV_RGB2GRAY ); //This is just a fun conversion the mimic's the human visual system cvLogPolar( bgr_frame, logpolar_frame, cvPoint2D32f(bgr_frame->width/2, bgr_frame->height/2), 40, CV_INTER_LINEAR+CV_WARP_FILL_OUTLIERS ); cvShowImage( "Log_Polar", logpolar_frame ); //Sigh, on linux, depending on your ffmpeg, this often won't work ... #ifndef NOWRITE cvWriteToAVI( writer, logpolar_frame ); #endif char c = cvWaitKey(10); if( c == 27 ) break; } #ifndef NOWRITE cvReleaseVideoWriter( &writer ); #endif cvReleaseImage( &gray_frame ); cvReleaseImage( &logpolar_frame ); cvReleaseCapture( &capture ); }
初次接触视频编码,现简单介绍一下视频编码:
所谓视频编码方式就是指通过特定的压缩技术,将某个视频格式的文件转换成另一种视频格式文件的方式。视频流传输中最为重要的编解码标准有国际电联的H.261、H.263、H.264,运动静止图像专家组的M-JPEG和国际标准化组织运动图像专家组的MPEG系列标准,此外在互联网上被广泛应用的还有Real-Networks的RealVideo、微软公司的WMV以及Apple公司的QuickTime等。
文章引用:百度百科
http://baike.baidu.com/link?url=9o3OWcVriiyEwLdIiIspcGbT_aAZ-Po2nmy2S1-kQUBEPP2FiqMjHN14KWKQe8V6e3g0n3kCMrzt2AB-O1j9_q
相关文章推荐
- arm-none-linux-gnueabi-解决make zImage奇怪错误
- CentOS6.5开机默认激活网卡方法
- IOC与AOP介绍
- 设置git bash打印log的颜色
- linux 命令系列之 日志轮替(75)
- HADOOP全排序
- OpenCV中的模板匹配方法及其应用
- opencv 2.4.4版本示例程序说明
- Linux【Red Hat】——GCC程序编译
- shell
- HBase 常用Shell命令
- Linux文件权限
- Linux文件权限与目录管理
- Linux文件权限与目录管理
- linux自学笔记
- 在Mac系统上安装Tomcat
- Hadoop之——分布式集群安装过程
- LInux 下安装Myeclipse2014
- Hbase shell 常用命令
- AE加载地图时报错:The operation was attempted on an empty geometry.