opencv中读取视频并显示

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

int main(int argc, char** argv[])
{
CvCapture* capture = 0;
capture = cvCreateFileCapture("E:/visual studio projects/video 1/video1/Megamind.avi"); //打开一个视频文件
if (!capture)
{
return -1;
}
IplImage *bgr_frame = cvQueryFrame(capture); //Init the video read,通过cvQueryFrame读入视频
double fps = cvGetCaptureProperty(capture, CV_CAP_PROP_FPS); //使用cvGetCaptureProperty来获得视频流的各种属性

CvSize size = cvSize(
(int)cvGetCaptureProperty( capture, CV_CAP_PROP_FRAME_WIDTH),
);

CvVideoWriter *write = cvCreateVideoWriter(
"hehe.avi", //新建视频文件的名称
CV_FOURCC('M', 'J','P','G'), //视频压缩的编码格式,此处为MJPG编码格式,
//opencv用宏CV_FOURCC来制定编码格式,确保自己电脑有这种编解码器,独立于opencv
fps, //播放的帧率
size //视频图像的大小,此处设为原始视频的帧率和大小
);

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(write, logpolar_frame);
}
cvReleaseVideoWriter(&write);
cvReleaseImage(&logpolar_frame);
cvReleaseCapture(&capture);

return 0;

相关文档
最新文档