将视频保存为opencv系列图像

时间:2013-01-15 23:03:58

标签: visual-studio-2010 opencv video-capture video-processing

这个问题是error-in-opencv-code-for-motion-detection的延续。编辑后的代码没有任何错误,但输出视频没有创建,它是零字节!这有什么问题?另外,为运动检测创建的​​边界框从来没有真正捕获过运动,它不会做什么呢最初声称要这么做。我误解了一些关于代码目标的东西?所以,这是我的问题:

  1. 如何纠正创作并保存视频?
  2. 需要修改什么来检测运动并跟踪它?
  3. 如何将视频转换为每帧的一系列编号jpg图像,反之亦然。

1 个答案:

答案 0 :(得分:0)

以下是您可以使用以将视频构图为一组图像的代码。

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include "cv.h"
#include <highgui.h>
#include "cxcore.h" 

int main( int argc, char** argv )
{    
     CvCapture *capture = cvCaptureFromAVI("E:\\Myvideo.avi");
             if(!capture) 
    {
        printf("!!! cvCaptureFromAVI failed (file not found?)\n");
        return -1; 
    }

    int fps = (int) cvGetCaptureProperty(capture, CV_CAP_PROP_FPS);

    printf("* FPS: %d\n", fps);

    IplImage* frame = NULL;
    int frame_number = 0;
    char key = 0;   

    while (key != 'q') 
    {
        // get frame 
        frame = cvQueryFrame(capture);       
        if (!frame) 
        {
            printf("!!! cvQueryFrame failed: no frame\n");
            break;
        }       




        // quit when user press 'q'
        key = cvWaitKey(1000 / fps);
    }

    // free resources
    cvReleaseCapture(&capture);

    return 0;
}