您的位置:首页 > 运维架构

opencv存储视频时存储大小为0以及打开是乱码的解决方法

2012-11-13 14:31 381 查看
CvCapture *capture=cvCaptureFromAVI(m_avipath);

if (!capture)

{

fprintf(stderr,"Could not initialize capturing...\n");

return;

}

int outCompressCodec = (int)cvGetCaptureProperty(capture, CV_CAP_PROP_FOURCC);

double fps=cvGetCaptureProperty(capture,CV_CAP_PROP_FPS);//帧率

int framecount=(int)cvGetCaptureProperty(capture,CV_CAP_PROP_FRAME_COUNT);

int i=0;

CvVideoWriter *writer=0;

int frameW=cvGetCaptureProperty(capture,CV_CAP_PROP_FRAME_WIDTH);

int frameH=cvGetCaptureProperty(capture,CV_CAP_PROP_FRAME_HEIGHT);

writer=cvCreateVideoWriter("f:\\2.avi",outCompressCodec,

fps,cvSize(frameW,frameH),1);

IplImage *outimg=0;

for (i=0;i<framecount;i++)

{

outimg=cvQueryFrame(capture);

// if(i%10==0)

cvWriteFrame(writer,outimg);

}

cvReleaseVideoWriter(&writer);

cvReleaseCapture(&capture);

一定要在写完视频的时候调用cvReleaseVideoWriter(&writer);否则存储的视频大小为0

cvCreateVideoWriter时,编码模式,图片大小应该和原始图片大小一致,可以通过cvGetCaptureProperty得到帧宽度和高度,帧率可以和原始视频不同。

可以通过在循环语句中加入判断来提取出某些帧图像来组成新的视频。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: