GUI接口的制作-打开AVI文件

GUI接口的制作-打开AVI文件

风在竹林 posted @ 2009年7月13日 00:52 in OpenCV with tags  OpenCV窗口接口程序设计 , 561 阅读

AVI文件制作完了,接着就是将制作出来的AVI文件作播放的动作啦.播放AVI文件的程序代码如下:

#include <cv.h>
#include <highgui.h>
#include <stdio.h>

int main ( )
{
    CvCapture *capture;
    IplImage *frame;
     char AviFileName [ ]= "Output.avi";
    capture = cvCaptureFromAVI (AviFileName );
    cvNamedWindow ( "AVI player", 0 );

     while ( true )
     {
         if (cvGrabFrame (capture ) )
         {
            frame=cvRetrieveFrame (capture );
            cvShowImage ( "AVI player",frame );

             if (cvWaitKey ( 10 )>= 0 )  break;
         }
         else
         {
             break;
         }
     }
    cvReleaseCapture (&capture );
    cvDestroyWindow ( "AVI player" );
}
 

执行结果:


用 cvCaptureFromAVI()播放AVI的文件,再开个窗口接口show出来,就是这么简单,其中cvGrabFrame()跟cvRetrieveFrame()其实就是cvQueryFrame()的组合,直接用cvQueryFrame()也行,在这里,当文件播放完的时候 cvGrabFrame()会自动返回0而while循环就会被break,如果没播放完就会返回1,而它就会继续执行播放相关的动作,当在GUI接口按任意键,就会跳出while循环而结束播放.再将数据结构的內存清空.


cvCaptureFromAVI()

这边是用来播放AVI相关文件,不过,它被OpenCV定义为


#define cvCaptureFromAVI cvCaptureFromFile
#define cvCaptureFromFile cvCreateFileCapture


所以用cvCaptureFromAVI()跟cvCaptureFromFile(),cvCreateFileCapture()其实都是一样的东西.这边其实扩展名不限avi档,只要文件格式符合OpenCV播放程序内建格式的标准就行

cvCaptureFromAVI("AVI文件名称");


cvGrabFrame()

将capture抓下来的图片放在OpenCV的高速缓存中,OpenCV描述是说用他们专用的压缩格式放在它们的高速缓存中.同样的,cvQueryFrame()也是相同的步骤,cvGrabFrame()返回的数值是0跟1,0是失败,1是成功.

int cvGrabFrame(CvCapture数据结构);


cvRetrieveFrame()

从高速缓存中撷取Frame,并配置给IplImage数据结构.这边cvQueryFrame()=cvGrabFrame()+cvRetrieveFrame().

cvRetrieveFrame(CvCapture数据结构);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
AVI-Mux 是一款综合性的视频文件分离/合成工具,免费,开源。 软件特点 目前支持如下输入格式 容器: AVI, MKV... 音频流: WAV, MPA/MP3, AC3, DTS, AAC, OGG/Vorbis... 字幕流: SRT, SSA... 目前支持如下输出格式 容器: AVI, MKV...Raw 数据: MPx, AC3, DTS... 音频流: ATDS-AAC, OGG/Vorbis... 软件功能特点 1) 支持 Open-DML AVI 规范,可创建无大小限制的 AVI 文件 2) 支持创建 Rec 列表 3) 可按大小、时间、章节等标准分割文件 4) 可导入 MPx, AAC, HE-AAC 等音频流到你的 AVI 中,以使其 100% 兼容 AVI 容器文件规范 5) 可抽取输入文件中的流为Raw数据,这是译者本人最常用的功能,比如抽取 AVI 容器文件中的 SRT, SSA 字幕流为独立的字幕文件. 再比如抽取 AVI/MKV 容器文件中的 MP3, AC3, DTS, AAC, OGG/Vorbis 等音频流为独立的音频文件-就是市面上常见的Video2Audio软件了, 不过貌似那些收费软件在这方面多数都是(二次)转码后输出,而不是像 AVI-Mux 这样完美地按照“原状”抽取出源文件的音频流 6) 使用固有缓存而非 Windows 的文件缓存以提升性能 7) 可以直接修复部分 AVI 而无需转码 8) 可直接存取 Mode 2 - Form 2 文件 9) 可直接使用 AVI 中的 Vorbis 流作为数据源 10) 可合成 SSA 字幕到 AVI/MKV 文件中 11) 根据 FourCC 而非根据扩展名来判定文件格式,这样 eMule 上那些将 MKV/OGM 文件刻意重命名为 AVI 刷分的小白们改造的假牙将不会混淆 程序对源文件的解析: 关于功能(5)抽取Raw数据 - 因为这可能是用户用的最频繁的功能之一了,所以单独提出来介绍下,其实很简单的: 打开输入文件->选中某输入文件->点击[自文件生成数据源]按钮->选中你所需的Raw数据->右键选择抽取为某格式即可。 比如某 MKV 使用 OGG/Vorbis 作为音频流,那么自然是抽取为 OGG. 抽取字幕的话同理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值