VC++图形图像处理源代码.pdf

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

利用VisualC++实现AVI文件的图像截取

AVI文件就是我们所说的多媒体文件,所谓的AVI图像就是视频图像,该文件是一个RIFF说

明文件,它用于获取、编辑、演示音频、视频序列。一般的AVI文件包含音频流和视频流,有

的特殊的AVI还包含一个控制路径或MIDI路径作为附加的数据流。

现在播放AVI文件的软件很多,但大多无法从AVI视频文件中读取一帧图像并生成BMP格

式的文件。笔者在使用AVI文件开发项目过程中对AVI文件的操作积累了一些经验,对于如何

实现从AVI视频流中获取任意帧的图像数据并存储成BMP文件,其中最关键的是要从AVI文

件中获取具体某一帧的图像数据,为此我利用Windows提供的API函数实现了自定义的CAvi

类,用于操作AVI文件。

在使用API函数操作AVI文件时,一定要注意用AVIFileInit()来初始化AVI库,程序结束时

用AVIFileExit()释放AVI库,否则API函数无法使用。现以操作包含真彩色图像的AVI文件为

例,给出Cavi类的部分函数的具体实现,其中CaviCreate()函数用于读取AVI文件信息并初始

化Cavi类的成员,例如根据AVI文件信息定义每帧图像的宽、高、每帧图像的信息头结构等等;

函数AviRead(intmFrame)用于从AVI文件中读取第mFrame帧。实现代码显示如下:

//Cavi类头文件定义;

classCAvifile://AVI类,处理AVI文件

{

public:

intcy//图象高

intcx//图象宽

file://longm_maxFrame

BYTE*pData//寸储图象数据

BITMAPINFO*m_pBMI//位图文件信息头

PAVISTREAMpavi//AVI流

PAVIFILEpfile//AVI文件指针

AVIFILEINFO*pfifile://AVI信息

BOOLAviRead(intmFrame)//读AVI文件的第mFrame帧

CAvi()//标准构造函数

CAviCreate(CStringstring)//用文件名初始化AVI类的成员

virtual~CAvi()

}

//Cavi类文件实现部分;

CAvi::CAvi()

{AVIFileInit()//初始化AVI库

cx=0//定义图象宽、高、等成员

cy=0

m_pBMI=NULL

pData=NULL

file://m_maxFrame=0

pfi=NULL

}

CAvi::~CAvi()//析构、释放指针

{

//AVIFileClose(pfile)

AVIFileExit()

if(pData!=NULL)

deletepData

pData=NULL

if(m_pBMI!=NULL)

deletem_pBMI

m_pBMI=NULL

if(pfi!=NULL)

deletepfi

pfi=NULL

}

CAvi::CAviCreate(CStringstring)//读文件初始化该类

{

HRESULhr

pfi=newAVIFILEINFO

hr=AVIFileOpen(pfile,//returnedfilepointer

string,//filename

OF_READ,//modetoopenfilewith

NULL)

hr=AVIFileInfo(pfile,file://获取AVI信息,放入pfi中

pfi,

sizeof(AVIFILEINFO)

)

cx=pfidwWidth//图象宽、高

cy=pfidwHeight

hr=AVIFileGetStream(//将AVI变成视频流

pfile,

pavi,

streamtypeVIDEO,

0//LONGlParam

)

m_pBMI=newBITMAPINFO//定义BMP信息头

m_pBMIbmiHeader.biBitCount=24

m_pBMIbmiHeader.biClrImportant=0

m_pBMIbmiHeader.biClrUsed=0

m_pBMIbmiHeader.biCompression=BI_RGB

m_pBMIbmiHeader.biHeight=cy

m_pBMIbmiHeader.biWidth=cx

m_pBMIbmiHeader.biPlanes=1

m_pBMIbmiHeader.biSize=sizeof(BITMAPINFOHEA

文档评论(0)

欢乐峡谷 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档