opencv读取图片并做成视频

来源:互联网 发布:科达网络控制键盘 编辑:程序博客网 时间:2024/05/01 11:06

#include <cv.h>

#include <highgui.h>
#include <stdio.h>
int main()
{
    IplImage *img=cvLoadImage("E://qt//intel_cup//SURF_H//A1.jpg",0);
    IplImage *img1=cvLoadImage("E://qt//intel_cup//SURF_H//A2.jpg",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
原创粉丝点击