- 1、本文档共69页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
利用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*pfi;file://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)//读文件初始化该类
{
HRESULThr;
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=
您可能关注的文档
- SD卡的传输协议和读写程序.pdf
- GBT 15972.10 光纤试验方法规范 系列标准.pdf
- SEO教程:利为汇教程之新手快速掌握优化技巧(6招完整篇).pdf
- GBT 15972.33 光纤试验方法规范 第33部分:机械性能的测量方法和试验程序 应力腐蚀敏感性参数.pdf
- SEO优化培训教程,绝密的增加外部链接的技巧-火人营销.pdf
- GBT 15972.34 光纤试验方法规范 第34部分:机械性能的测量方法和试验程序 光纤翘曲.pdf
- SEO优化推广策略.pdf
- SEO优化站长初学者教程.pdf
- GBT 15972.40 光纤试验方法规范 第40部分:衰减.pdf
- SEO优化作业流程图.pdf
- 新解读《GB_T 33783 - 2017可编程逻辑器件软件测试指南》最新解读.docx
- 新解读《GB_T 33786 - 2017反应红LS - 7B(C.I.反应红250)》最新解读.docx
- 新解读《GB_T 33784 - 2017可编程逻辑器件软件文档编制规范》最新解读.docx
- 新解读《GB_T 33788 - 2017反应染料 色光和强度的测定 低盐染色法》最新解读.docx
- 新解读《GB_T 33787-2017反应黄LS-3R(C.I.反应黄145)》最新解读.docx
- 新解读《GB_T 33785 - 2017高辐射覆层节能技术规范》最新解读.docx
- 新解读《GB_T 33790-2017反应大红LS-R(C.I.反应红222)》最新解读.docx
- 新解读《GB_T 33789 - 2017磺化对位酯》最新解读.docx
- 新解读《GB_T 33795 - 2017反应染料 水解速率的测定》最新解读.docx
- 新解读《GB_T 33797 - 2017塑料 在高固体份堆肥条件下最终厌氧生物分解能力的测定 采用分析测定释放生物气体的方法》最新解读.docx
文档评论(0)