OpenCV —— 写入AVI视频文件

摘要:
capture=cvCreateFileCapture(“video.avi”);IplImage*bgr_frame=cvQueryFrame(捕获);'1')=MPEG-1codecCV_ FOURCC('M','G')=运动jpegcodec(不工作)CV_,

打开视频文件,对每一帧进行极坐标变换,然后将转换生成的图像序列写入视频文件中

#include "cv.h"
#include "highgui.h"

int main(int argc,char** argv)
{
    CvCapture* capture=0;
    capture = cvCreateFileCapture("video.avi");

    if(!capture)
        return -1;
    
    IplImage* bgr_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));

    //CvVideoWriter* writer=cvCreateVideoWriter("ji.avi",CV_FOURCC('M','J','P','G'),fps,size);
    CvVideoWriter* writer=cvCreateVideoWriter("ji.avi",-1,fps,size);
    
    /*
    avi对应的编码格式分别为:
    CV_FOURCC('P','I','M','1') = MPEG-1 codec 
    CV_FOURCC('M','J','P','G') = motion-jpeg codec (does not work well) 
    CV_FOURCC('M', 'P', '4', '2') = MPEG-4.2 codec 
    CV_FOURCC('D', 'I', 'V', '3') = MPEG-4.3 codec 
    CV_FOURCC('D', 'I', 'V', 'X') = MPEG-4 codec 
    CV_FOURCC('U', '2', '6', '3') = H263 codec 
    CV_FOURCC('I', '2', '6', '3') = H263I codec 
    CV_FOURCC('F', 'L', 'V', '1') = FLV1 codec 
    */

    
    IplImage* logpolar_frame=cvCreateImage(size,IPL_DEPTH_8U,3);

    while((bgr_frame=cvQueryFrame(capture))!=NULL)
    {
        cvLogPolar(bgr_frame,logpolar_frame,cvPoint2D32f(bgr_frame->width/2,bgr_frame->height/2),40,CV_INTER_LINEAR+CV_WARP_FILL_OUTLIERS);
        
        /*
            src 源图像
            dst 目标图像
            center 变换中心,此处输出精度最高。
            M 幅度尺度参数
            flags:为插值方法标示与下面选项的组合:
                CV_WARP_FILL_OUTLIERS 填充目标图像中的所有像素,如果某些像素对应于源图像之我的位置,则用0填充.
                CV_WARP_INVERSE_MAP  表示矩阵是从目标图像到源图像的反变换,因此,可以直接用于像素插值;否则,函数从map_matrix寻找变换。
        */

        cvWriteFrame(writer,logpolar_frame);
    }

    cvReleaseVideoWriter(&writer);
    cvReleaseImage(&logpolar_frame);
    cvReleaseCapture(&capture);
    return 0;

}

cvCreateVideoWriter :Under Win32 it is possible to pass -1 in order to choose compression method and additional compression parameters from dialog。

如果使用指定的编码不能成功写入,使用-1替换CV_FOURCC,运行时会有提示让你自己选择 codec 。

免责声明:文章转载自《OpenCV —— 写入AVI视频文件》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇命名空间“System.Windows”中不存在类型或命名空间名“Forms”(是否缺少程序集引用?) ——c#Mysql 10053 SocketException 你的主机中的软件中止了一个已建立的连接。下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

报错:(未解决)java.lang.VerifyError: Instruction type does not match stack map

报错背景: CDH中集成kafka的服务,解决完kafka的jar包报错之后重启,发现这个报错。 报错现象: java.lang.VerifyError: Instruction type does not match stack map Exception Details: Location: org/eclipse/jetty/se...

PHP 原生实现MVC框架

2017-6-5 由于工作需要 打算自己实现一个简单的  MVC框架以完成工作需求   初步定义 框架需要完成的工作 1.单入口的路由功能 2.文件的自动载入 3.流水ID的加密以及自动解密 4.MVC文件夹模式 5.通用模板的引用     单入口的路由实现   项目接口的 public 目录中存在一个index.php 文件 作为 项目的唯一入口   文...

mybatis 遇到空串无法判断

sql 语句中对传入的关键字进行判断,如果是空或者空串则不进入条件 <if test="query.keyword !=null and query.keyword != ''"> and (t.id like concat('%',#{query.keyword},'%') or...

Oracle查看和修改连接数

  1.查询数据库当前进程的连接数:   select count(*) from v$process;   2.查看数据库当前会话的连接数:   elect count(*) from v$session;   3.查看数据库的并发连接数:   select count(*) from v$session where status='ACTIVE';  ...

jQuery----1

简介   jQuery可以像CSS一样选择页面内的元素。比如:$('p')会选中所有的段落。   使用$(document).ready()就可以添加文档载入完毕之后执行的代码。   使用$.fn.func = function(){}的方式可以扩展jQuery。   选择器   简单示例:   <script type="text/JavaSc...

es6中find方法

 find() 方法返回数组中满足提供的测试函数的第一个元素的值。否则返回 undefined。 var array1 = [5, 12, 8, 130, 44]; var found = array1.find(function(element) { return element > 10; }); console.log(found)...