【问题标题】:Saving video as series of images opencv将视频保存为一系列图像opencv
【发布时间】:2013-01-15 23:03:57
【问题描述】:

这个问题是error-in-opencv-code-for-motion-detection 的延续。编辑后的代码没有任何错误,但没有创建输出视频,它是零字节!这有什么问题?另外,为运动检测创建的​​边界框从未真正捕捉到运动,也就是说,它没有做它做的事情最初声称这样做。我是否误解了代码的目标?所以,这是我的问题:

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

【问题讨论】:

  • 我想你可以试试这里给出的不同代码stackoverflow.com/questions/12007150/…
  • 谢谢你的链接。据我了解,代码中没有视频捕获部分。我主要担心的是,在捕获视频后,需要保存它以便对其进行构图。但是,它没有被保存。然后我可以使用链接中的代码来构图保存的视频。所以,你能告诉我代码中有什么问题以及如何保存视频。
  • 阅读视频并将其保存为视频 这是一个链接...stackoverflow.com/questions/12054907/…...。如果您想将其保存为一组图像,我将发布代码...
  • 感谢您的链接。如果您可以发布将视频保存为一组图像的代码,我将不胜感激,如果它不麻烦且不耗时,您可以将其附加到我的问题中提供的代码链接中。
  • 您好,链接中的代码返回错误,无法编译!另外,如何使用 cvCreateVideoWriter 保存视频。

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


【解决方案1】:

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

#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;
}

【讨论】:

    猜你喜欢
    • 2013-09-18
    • 2011-04-10
    • 1970-01-01
    • 2018-06-20
    • 1970-01-01
    • 1970-01-01
    • 2021-05-05
    • 1970-01-01
    • 2011-04-04
    相关资源
    最近更新 更多