- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
VC环境下视频图像开发
VC++环境下视频图像开发 摘 要:随着社会的不断发展和进步,监控系统在各行各业越来越广泛的被应用,监控已经从零散逐步走向集成化。本文首先分析了几种常用的数据采集方式,并对在VC++环境能采用的采集方式做了分析和说明。接着分析了视频信号的预览、录像功能及视频回放功能的实现等。
关键词:VC++;视频;通道
中图分类号:TP391
1 视频的采集分析
常用的视频采集方法有VWF、DirectShow和SDK三种。最早使用的是VWF,它是由一组库函数组成的数字视频软件包。是Microsoft公司推出用于实现视频捕捉、影像视频压缩及影像播放的。虽然它是随使Windows操作系统一起安装,可执行文件不需要附带额外的库文件就可以运行, VFW最致命的弱点是和一般的视频卡不兼容,所以在视频采集中一般不考虑用VFW技术。DirectShow支持多种媒体格式,比如ASF、MPEG、AVI、MP3、WAV,因为如此它容易实现媒体数据的采集、回放。SDK采集方式和上面两种不一样,它是监控卡厂家提供的开发视频监控的一组库函数,在用户按照自己的需求使用SDK库函数,不需要了解视频压缩、回放、网络传输技术,利用函数进行视频开发。本文以海康威视提供的SDK为例。视频画面的分割与预览
将多个检测点的视频图像同时在一台计算机进行显示就需要视频画面的分割与预览。在开发中,CEdit控件是实现视频画面的分割与预览的。因为类具有的继承性,所以定义一个新的Ceditwin类,在该类中增加一个能实现视频的预览、画面的分割等功能成员函数disp() 。一般控制需要监控程序一运行就能够进入预览画面,这一功能的实现是在Ceditwin类的WM_PAINT消息处理函数OnPaint() 中调用了显示函数 disp() ,多画面预览是在该函数中通过视频采集卡提供的StartVideoPreview() 函数实现的。StartVideoPreview() 函数能完成的功能比较多,使用也方便,这个函数的使用格式如下:
其定义为:int __stdcall StartVideoPreview(HANDLE hChannelHandle,HWND WndHandle, RECT *rect,BOOLEAN bOverlay, int VideoFormat, int FrameRate)
这个函数的参数和功能如下所示:
通道句柄 HANDLE hChannelHandle;
显示窗口句柄 HWND WndHandle;
显示窗口内的矩形区域 RECT *rect;
是否启用Overlay预览模式 BOOLEAN bOverlay; *
视频预览格式(目前无效 int VideoFormat;)
视频预览帧率(PAL:1-25,NTSC:1-30)int FrameRate;
这个函数被调后返回值:0是成功返回;如果失败则返回错误号。
需要特别说明的是,这个函数的功能是启动视频预览。其参数较多,其中通道句柄确定了要显示的通道号或检测点,窗口句柄则是指图像在哪个控件上显示,在该系统中,图像在Cedit控件中显示。显示窗口内的矩形区域,指明了当前通道号的图像信息的显示位置,正因为有了这个参数,我们将Cedit控件的整个区域可划分为一系列小矩形,每个矩形区域可显示一路图像,实现了多画面的分割与显示。显示模式置为Overlay模式,视频预览帧率置为25,这样视频图像连续顺畅,没有迟钝的现象。多画面预览的设计思路如下所示。
图1 画面的分割与预览流程图
在上面的流程图中,画面的显示是通过显示方式在disp() 函数中判断是单画面还是多画面,然后通过调用启动视频预览函数StartVideoPreview() 在相应的区域中显示图像实现的。
当对某一通道的画面进行双击或通过猪舍选择框进行猪舍号选择时,预览画面从多通道界面切换到当前所选择的猪舍画面。实现的方法是当进行双击或进行通道切换后,将显示方式置为单界面方式,接着置当前通道号,然后调用显示函数disp() 便实现了通道的切换。
2 视频录像的开发
一般情况下监控不仅仅只为了简单的监控,能看见画面就行,还要求能够实现录像。如果需要对所选择的通道进行录像时,单击“录像”按钮,这一按钮就会变成“监控”,这些功能是通过响应OnRec() 函数实现的同时实现对所选择的通道进行录像;当再次单击“监控”按钮时,按钮标题变为“录像”,此时停止了录像。
对视频信息的录像,简单地说就是将视频采集卡提供的合法数据流写到指定的文件下。比如海康视频采集卡提供的数据流信息如下:
非法帧数据 PktError
系统头PktSysHeade
文档评论(0)