对一个视频进行极坐标转化
#include <cv.h>
#include <highgui.h>
#include<iostream>
int main()
{
CvCapture* capture = 0;
capture = cvCreateFileCapture("Example2.avi");
if (!capture)
{
exit(0);
}
IplImage *bgr_frame = cvQueryFrame(capture); //通过cvQueryFrame()函数读入视频
double fps = cvGetCaptureProperty(capture, CV_CAP_PROP_FPS); //通过cvGetCaptureProperty()函数可获得视频流的重要属性
CvSize size = CvSize( //获取视频的大小(长、宽)
(int)cvGetCaptureProperty(capture, CV_CAP_PROP_FRAME_WIDTH),
(int)cvGetCaptureProperty(capture, CV_CAP_PROP_FRAME_HEIGHT)
);
CvVideoWriter *writer = cvCreateVideoWriter("copy.avi", CV_FOURCC('M', 'J', 'P', 'G'), fps, size); //创建一个avi格式的文件,可根据第二个参数的不同来创建不同格式的视频文件,第三个参数为帧数,第四个为视频大小
IplImage* logpolar_frame = cvCreateImage(size, IPL_DEPTH_8U, 3); //创建一个临时变量
while ((bgr_frame = cvQueryFrame(capture)) != NULL)
{
cvLogPolar(bgr_frame, logpolar_frame, CvPoint2D32f(bgr_frame->width / 2, bgr_frame->height / 2), 40, CV_INTER_LINEAR + CV_WARP_FILL_OUTLIERS); //对每一帧进行极坐标转换
cvWriteFrame(writer, logpolar_frame); //写入文件
}
cvReleaseVideoWriter(&writer); //释放内存
cvReleaseImage(&logpolar_frame);
cvReleaseCapture(&capture);
}
这只是一次初步的尝试,大概理解内容即可