- 1、本文档共39页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
《谈谈使用VF在windows下编程控制摄像头》
谈谈使用VFW在windows下编程控制摄像头(一)。 【孙涛】
Microsoft? Video for Windows? (VFW) 提供的函数可以让应用程序去处理视频数据。 VFW 在16位Windows的时候就被引入了。它的许多重要功能已经被DirectX取代了。 要获得更多的信息,你可以参考DirectX 的文档。下面讲介绍VFW的视频捕获:
3.
你可以使用windows的AVICap 类轻松地完成视频捕获。AVICap 提供给应用程序一个简单的、基于消息的接口去访问视频设备和录音设备,并且可以控制处理视频流捕获。
3.1 关于视频捕获
AVICap支持实是视频流捕获和实时单帧图像捕获。另外,AVICap 提供了对视频源的控制(MCI媒体控制接口设备),因此使用者可以通过应用程序控制一个视频源开始和结束的位置,并且可以加大对帧捕获的控制。
你使用AVICap 类可以完成如下的任务:
?
((((((((((捕获声音和视频,并将他们写入到一个AVI文件中。
((((((((((动态连接和断开视频和音频的输入设备。
((((((((((使用覆盖或预览的方法去显示当前的视频信号。
((((((((((指定一个文件用于捕获,并且把这个捕获文件的内容拷贝给另一个文件。
((((((((((设定捕获图像速度(好多帧)。
((((((((((显示对话框用于控制视频源和格式。
((((((((((创建、保存、加载调色板。
((((((((((拷贝图像和调色板到剪贴板中。
((((((((((捕获并把图像作为一个DIB位图保存。
?
3.1.1视频捕获:最简单的方法
视频捕获将数字化一个视频流和音频数据,并且将他们保存在硬盘和其他存储设备上。
这里将描述如何在应用程序中简单地应用视频捕获,它通过三句代码实现。它还介绍了如何通过发送消息给视频捕获窗口来结束或中断一个视频会话。
AVICap 捕获窗口可以把捕获的音视频信息写入一个AVI文件中。你的应用程序可以自由地处理这个AVI文件、管理缓存区的音视频数据、还可以在底层访问音视频设备的驱动器。AVICap为应用程序提供了一个灵活的接口。你可以使用下面的代码,在你的应用程序中加入视频捕获:
?
HWndC = capCreateCaptureWindow ( My Own Capture Window,
WS_CHILD | WS_VISIBLE , 0 , 0, 160, 120, hwndParent, nID);
SendMessage ( hWndC, WM_CAP_DRIVER_CONNECT, 0 /* wIndex */, 0L);
SendMessage ( hWndC, WM_CAP_SEQUENCE, 0, 0L);
宏接口同样有用,你可以选择是使用宏接口还是SendMessage 函数来实现上面的功能,不过宏接口可以让你的代码更加容易理解。下面就使用了宏接口。
?
HWndC = capCreateCaptureWindow ( My Own Capture Window ,
WS_CHILD | WS_VISIBLE , 0, 0, 160, 120, hwndParent, nID);
capDriverConnect ( hWndC, 0); // 宏接口
capCaptureSequence ( hWndC); // 宏接口
你的应用程序创建AVICap捕获窗口,并和视频设备建立连接后。你创建的这个捕获窗口就准备捕获数据了。这时,你可以通过发送WM_CAP_SEQUENCE消息(或capCaptureSequence 宏)开始对数据进行捕获。
?
WM_CAP_SEQUENCE将使用默认设置,开始对视频和音频进行捕获,并把数据放在一个CAPTURE.AVI的文件中,捕获动作将一直持续,除非有下面的事件发生:
((((((((((用户按了ESC键或者鼠标的按钮。
((((((((((你的应用程序停止或者退出了捕获操作。
((((((((((磁盘写满了。
在应用程序中,你可以通过发送WM_CAP_STOP命令(或capCaptureStop)给捕获窗口,让它停止向文件写数据。你还可以通过发送WM_CAP_ABORT命令(或capCaptureAbort)给捕获窗口,让它中断捕获操作。
?
3.1.2捕获基本设置
? 通过对定义在CAPTUREPARMS结构中的捕获参数进行修改,你可以完成:
((((((((((改变捕获的帧频律(帧/秒);
((((((((((指定用键盘或鼠标去结束一个捕获会话;
((
文档评论(0)