OpenCV學習(七)之寫入AVI視頻文件

示例代碼:

#include "highgui.h"
#include "cv.h"

using namespace cv;

//write a avi video
int main(int argc,char** argv)
{
	CvCapture* capture = 0;
	capture = cvCreateFileCapture("test.avi");
	if(!capture)
	{
		return -1;
	}
	IplImage* bgr_frame = cvQueryFrame(capture);  //init the video read
	double fps = cvGetCaptureProperty(capture,CV_CAP_PROP_FPS);  //frame rate
	CvSize size = cvSize((int)cvGetCaptureProperty(capture,CV_CAP_PROP_FRAME_WIDTH),cvGetCaptureProperty(capture,CV_CAP_PROP_FRAME_HEIGHT));
	CvVideoWriter* writer = cvCreateVideoWriter("out.avi",CV_FOURCC('M','J','P','G'),fps,size);
	IplImage* logPolarFrame = cvCreateImage(size,IPL_DEPTH_8U,3);
	while((bgr_frame = cvQueryFrame(capture)) != NULL)
	{
		cvLogPolar(bgr_frame,logPolarFrame,
			cvPoint2D32f(bgr_frame->width/2,bgr_frame->height/2),
			80,
			CV_INTER_LINEAR + CV_WARP_FILL_OUTLIERS
			/*CV_INTER_LINEAR | CV_WARP_FILL_OUTLIERS | CV_WARP_INVERSE_MAP*/);
		cvWriteFrame(writer,logPolarFrame);
	}
	cvReleaseVideoWriter(&writer);
	cvReleaseImage(&logPolarFrame);
	cvReleaseCapture(&capture);
	return 0;
}

使用了CvSizeCvVideoWriter類,以及其中的函數cvSize、cvCreateVideoWriter、cvWriteFrame。在每幀圖像的變換中使用了cvLogPolar極座標變換函數。程序運行完畢後你會在工程目錄下看見一個名爲out.avi的視頻文件。




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章