zoukankan      html  css  js  c++  java
  • 用OpenCV进行视频截取

      记录用OpenCV进行视频截取。
       核心代码如下:

    CvCapture* capture = cvCreateFileCapture(src_avi_file.c_str());
    if (capture == NULL)
    {
        return  - 1;
    }
    int fps=(int)cvGetCaptureProperty(capture,CV_CAP_PROP_FPS); //帧率
    IplImage* frame;
    frame = cvQueryFrame(capture);
    CvVideoWriter* writer1 = cvCreateVideoWriter(dst_avi_file.c_str(),CV_FOURCC('X','V','I','D'),cvGetCaptureProperty(capture,CV_CAP_PROP_FPS),cvGetSize(frame));
    int i=start_frame;
    cvSetCaptureProperty(capture,CV_CAP_PROP_POS_FRAMES,i);
    if (end_frame > video_info.frame_count)
    {
        end_frame = video_info.frame_count ;
    }
    while(i<end_frame)
    {
        i++;
        frame = cvQueryFrame(capture);
        if (!frame)
        {
            return 2;
        }
        cvWriteFrame(writer1,frame);
    }
    cvReleaseVideoWriter(&writer1);
    cvReleaseCapture(&capture);

       由于是截取出来的,其中有一些变量没有初始化,直接使用的话会报错。

      另外,OpenCV支持的视频格式很有限,avi是支持的,貌似标准H264也支持。

      然后遇到了个问题:IplImage在什么情况需要释放,什么情况不需要释放。因为我一开始以为IplImage应该要释放,但在释放的这里崩溃了。把释放的这里去掉了之后也没有出现内存泄露。有些不是很明白。要是有人看到这个问题并愿意告知,那真是万分感谢。

  • 相关阅读:
    【飞谷六期】爬虫项目3
    Design Pattern
    Markdown
    Git
    Storm-源码分析汇总
    Storm-源码分析-acker (backtype.storm.daemon.acker)
    Storm-源码分析-Topology Submit-Executor
    Storm-源码分析-Topology Submit-Executor-mk-threads
    Storm-源码分析- bolt (backtype.storm.task)
    Storm-源码分析- spout (backtype.storm.spout)
  • 原文地址:https://www.cnblogs.com/betterwgo/p/6561447.html
Copyright © 2011-2022 走看看