Opencv学习07

写入视频avi文件(附cvCreateVideoWriter avi文件错误的解决方法)

//
//  main.cpp
//  Study07
//
//  Created by Sean on 16/2/22.
//  Copyright © 2016年 Sean. All rights reserved.
//

#include <iostream>
#include "highgui.h"
#include "cv.h"

using namespace std;

int main(int argc, const char * argv[]) {
    // insert code here...
    cout << "Project start..."<<endl;
    char name[]="/Users/sean/Documents/untitled folder/2.avi";
    CvCapture* capture = cvCreateFileCapture(name);
    if(!capture)
        return -1;
    IplImage* rgb_frame = cvQueryFrame(capture);
    double fps = cvGetCaptureProperty(capture, CV_CAP_PROP_FPS);
    CvSize size = cvSize
    (
     (int)cvGetCaptureProperty(capture, CV_CAP_PROP_FRAME_WIDTH),
     (int)cvGetCaptureProperty(capture, CV_CAP_PROP_FRAME_HEIGHT)
    );
//    CvSize size =cvGetSize(rgb_frame);
//此处为了严谨,需要从capture中获取尺寸,当然,直接cvGetSize(rgb_frame)也是可以的,结果一样

    CvVideoWriter* write = cvCreateVideoWriter
    (
     "/Users/sean/Documents/untitled folder/3.avi",
     CV_FOURCC('j', 'p', 'e', 'g'),
     fps,
     size
    );
    IplImage* logpolar_frame = cvCreateImage(size, IPL_DEPTH_8U, 3);
    while(rgb_frame)
    {
        if(cvWaitKey(33)==27)
            return -1;
        if((rgb_frame = cvQueryFrame(capture)))
            cvWriteFrame(write, logpolar_frame);
    }
    cvReleaseVideoWriter(&write);
    cvReleaseImage(&rgb_frame);
    cvReleaseCapture(&capture);
    return 0;
}

OS X下的avi写入好烦,在stackoverflow网站问了大神,问题终于解决了,具体看代码。csdn里就不说了,问了都没人回答。国内我还没搜到这种使用方法,主要就是cvCreateVideoWriter的用法问题,第二个参数CV_FOURCC国内给的根本就不全,还有N种写法,Mac下用xcode可使用的编码我测试了jpeg可以用,其它方式后面补充,使用的时候cvCreateVideoWriter第二个参数填写CV_FOURCC('J','P','E','G'),这个应该和mac下解码器的安装有关,网上mac的教程少之又少,可以用jpeg代替。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值