Opencv学习07

来源:互联网 发布:openstreetmap数据分析 编辑:程序博客网 时间:2024/06/05 08:34

写入视频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代替。

0 0
原创粉丝点击