#include <cv.h> #include <highgui.h> int main(int argc, char **argv) { CvCapture* capture = NULL; capture = cvCreateFileCapture("紅動中國設計網視頻素材2185.avi"); if (!capture) return -1; //獲取視頻的第一幀 並存在bgr_frame IplImage *bgr_frame = cvQueryFrame(capture); //獲得視頻的總幀數 CV_CAP_PROP_FPS 幀率 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)); ///創建一個視頻文件參數分別表示 新建視頻的名稱 視頻壓縮的編碼格式 新建視頻的幀率 新建視頻的圖像大小 CvVideoWriter *writer = cvCreateVideoWriter("1ai.avi", CV_FOURCC('M', 'J', 'P', 'G'), fps, size); //創建首地址 並分配存儲空間 IplImage* logpolar_frame = cvCreateImage(size, IPL_DEPTH_8U, 3); // 獲取視頻的下一幀 while ((bgr_frame = cvQueryFrame(capture)) != NULL) { //將視頻從笛卡爾坐標系轉到極坐標系 參數分別表示 輸入圖像 輸出圖像 變換中心 尺度參數 填充輸出圖像所有參數 + CV_INTER_LINEAR 表示雙線性參值(具體什么意思) cvLogPolar(bgr_frame, logpolar_frame, cvPoint2D32f(bgr_frame->width / 2, bgr_frame->height / 2), 80, CV_INTER_LINEAR + CV_WARP_FILL_OUTLIERS); //將獲取到的每一幀從笛卡爾坐標系轉到極坐標系后的參數 存到新建的視頻文件 cvWriteFrame(writer, logpolar_frame); //將獲取的視頻通過mainwin窗口進行展示 cvShowImage("mainwin", logpolar_frame); char c = cvWaitKey(33); //ESC 默認退出 if (c == 27) break; } //釋放程序中申請的空間 cvReleaseVideoWriter(&writer); cvReleaseImage(&logpolar_frame); cvReleaseCapture(&capture); return(0); }
