分享

opencv把图片转换为视频,再读取视频并显示

 昵称12278894 2013-09-16
#include <cv.h>
#include <highgui.h>
#include <stdio.h>

int main()
{
IplImage *img=cvLoadImage("0.bmp",0);
IplImage *img1=cvLoadImage("10.bmp",0);
IplImage *temp=cvCreateImage(cvGetSize(img),IPL_DEPTH_8U,1);
CvVideoWriter * pwriter;
pwriter=cvCreateVideoWriter("my.avi",0 ,20,cvGetSize(img),1);
printf("%x\n",pwriter);
int num=100;
while(num>0)
{
if(num%2==0)
cvCopy(img,temp);
else
cvCopy(img1,temp);
int result=cvWriteFrame(pwriter,temp);
num--;
}
cvReleaseVideoWriter(&pwriter);
cvReleaseImage(&img);

    //=======================================================
    CvCapture * capture = cvCreateFileCapture ("my.avi");  //读取视频
    if(capture==NULL)
{
printf("NO capture");    //读取不成功,则标识
return 1;
};    
    double fps=cvGetCaptureProperty(capture, CV_CAP_PROP_FPS );   //读取视频的帧率
int vfps = 1000 / fps;                                        //计算每帧播放的时间
    printf("%5.1f\t%5d\n",fps,vfps);                             
double frames=cvGetCaptureProperty(capture,CV_CAP_PROP_FRAME_COUNT);//读取视频中有多少帧
printf("frames is %f\n",frames);
cvNamedWindow("example",CV_WINDOW_AUTOSIZE);                  //定义窗口
IplImage * frame;
while(1)
frame = cvQueryFrame( capture );  
if(!frame)
break;
float ratio = cvGetCaptureProperty(capture, CV_CAP_PROP_POS_AVI_RATIO);     //读取该帧在视频中的相对位置
printf("%f\n",ratio);
cvShowImage("example",frame);                          //显示
char c = cvWaitKey(vfps);
if(c == 27 )break;
}
cvReleaseCapture(&capture);
cvDestroyWindow("example");
return 0;
}

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多