示例代碼:
#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;
}
使用了CvSize和CvVideoWriter類,以及其中的函數cvSize、cvCreateVideoWriter、cvWriteFrame。在每幀圖像的變換中使用了cvLogPolar極座標變換函數。程序運行完畢後你會在工程目錄下看見一個名爲out.avi的視頻文件。