OpenCV将彩色视频转换为灰度视频并保存

原创 2015年11月19日 14:21:09
#include "cxcore.h"
#include "cvcam.h"
#include "windows.h"
#include "cv.h"
#include "highgui.h"
#include "stdio.h"

#pragma comment(lib, "cv.lib")
#pragma comment(lib, "cxcore.lib")
#pragma comment(lib, "highgui.lib")

 
int main()
{
	CvCapture* capture = NULL;
	IplImage* bgr_frame = NULL;

	capture = cvCreateFileCapture( "tree.avi" );//函数给指定文件中的视频流分配和初始化CvCapture结构。
	if ( !capture )
	{
		return -1;
	}

//	cvNamedWindow("111",CV_WINDOW_AUTOSIZE);
//	cvNamedWindow("222",CV_WINDOW_AUTOSIZE);

	bgr_frame = cvQueryFrame(capture);// Init the video read 从摄像头或者文件中抓取并返回一帧 
	double fps = cvGetCaptureProperty( capture, CV_CAP_PROP_FPS );
	CvSize size = cvSize( ( int ) cvGetCaptureProperty( capture, CV_CAP_PROP_FRAME_WIDTH ),
	                      ( int ) cvGetCaptureProperty( capture, CV_CAP_PROP_FRAME_HEIGHT ) );
/*
		用cvCreateVideoWriter创建写AVI文件的容器时,当它的第二个参数是-1时,弹出对话框,
	    选择压缩编码方式,然后写avi视频正确,并且能打开。
	
		CV_FOURCC('P','I','M','1') = MPEG-1 codec 
		CV_FOURCC('M','J','P','G') = motion-jpeg codec (does not work well)
		CV_FOURCC('M', 'P', '4', '2') = MPEG-4.2 codec
	  CV_FOURCC('D', 'I', 'V', '3') = MPEG-4.3 codec
	  CV_FOURCC('D', 'I', 'V', 'X') = MPEG-4 codec  失败
    	CV_FOURCC('X', 'V', 'I', 'D') = MPEG-4 codec  成功
	  CV_FOURCC('U', '2', '6', '3') = H263 codec
	  CV_FOURCC('I', '2', '6', '3') = H263I codec
	  CV_FOURCC('F', 'L', 'V', '1') = FLV1 codec	
*/

	CvVideoWriter *writer = cvCreateVideoWriter( "myvide.avi",	CV_FOURCC('X', 'V', 'I', 'D'), fps, size);
	IplImage* logpolar_frame = cvCreateImage( size, IPL_DEPTH_8U, 1);

	while( (bgr_frame = cvQueryFrame( capture )) != NULL )
	{
	//	cvShowImage("111", bgr_frame );
	    
	//  cvLogPolar(bgr_frame, logpolar_frame, cvPoint2D32f(bgr_frame->width/2, bgr_frame->height/2),40,CV_INTER_LINEAR+CV_WARP_FILL_OUTLIERS);
		cvCvtColor( bgr_frame, logpolar_frame, CV_BGR2GRAY );
		logpolar_frame->origin=1;//视频与原视频方向一致
		cvWriteFrame( writer, logpolar_frame );

	//	cvShowImage("222", logpolar_frame);

	//	char c=cvWaitKey(33);
	//	if(c==27) break;
	}

	//销毁窗口
//	cvDestroyWindow("111");
//  cvDestroyWindow("222");
//	cvDestroyAllWindows();

    //释放图像
	cvReleaseVideoWriter( &writer );
	cvReleaseImage( &logpolar_frame );
	cvReleaseCapture(&capture);

	return 0;
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

Opencv彩色视频转换为灰度视频

#include using namespace cv; int main() { cvNamedWindow("PKU_Video", CV_WINDOW_AUTOSIZE); cvName...

opencv摄像头采集图像彩色图转换成灰度图

#include "cxcore.h" #include "cvcam.h" #include "windows.h" #include "cv.h" #include "highgui.h" #in...

用opencv保存视频为什么打不开?

为什么打不开呢,因为没释放!! 话说我吃了好多没释放的苦! 本来打不开,我下载了一个完美解码,然后就能打开了,但是打开后没有时间线 找了好久才发现是因为没有释放! cvRe...

opencv VideoWriter保存视频失败原因

为了采集昨晚自己在PC上搭了一个简单的DVR

Opencv中的Bug(实现读入一个彩色视频文件并以灰度格式输出这个视频文件,学习opencv例2-10)

Opencv中的Bug(实现读入一个彩色视频文件并以灰度格式输出这个视频文件,学习opencv例2-10) 今天,为了这个程序弄了一个下午,以前记得弄出结果了,可是没有记载又忘了;所以今天把这些bug...

OpenCV应用笔记】(彩色/灰度)图像像素值读取并保存到txt文件

作者:skyseraph 出处:http://www.cnblogs.com/skyseraph/ Email/GTalk: zgzhaobo@gmail.com QQ:452728574 ...

将彩色视频转换为灰度视频源代码

很简单的功能,就是实现一个彩色视频转化为灰度视频 [cpp] view plain copy  print? #include "cv.h"   #...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)