织梦CMS - 轻松建站从此开始!

罗索

usb摄像头视频数据抓取初探

jackyhwei 发布于 2010-10-28 12:35 点击:次 
总体上来说,在win平台下面摄像头数据采集无外乎两种方式vfw和direct show。其中vfw是不依赖于什么sdk的,只要有系统api即可实现摄像头数据的采集,属于早期常用的视频采集库;而direct show则是需要配合direct x的sdk才可以使用,一般用于wdm驱动的usb摄像头。
TAG:

网上关于利用direct show抓取摄像头的视频数据的文章已经很多了,结合我的试验写点心得和体会。
需要注明的是,我用到的代码也是来自于网上,感谢这小段代码的原作者,他的劳动和付出,节省了我们大量的的摸索时间。
 
总体上来说,在win平台下面摄像头数据采集无外乎两种方式vfw和direct show。其中vfw是不依赖于什么sdk的,只要有系统api即可实现摄像头数据的采集,属于早期常用的视频采集库;而direct show则是需要配合direct x的sdk才可以使用,一般用于wdm驱动的usb摄像头。
 
这里我们只讨论相对容易些的direct show方式。
 
(1)环境准备工作
我们首先需要安装direct show的sdk,或者从网上下载direct show的依赖库,二者均可,不过需要提到的是direct x的sdk最好安装direct x 9b的,听说新版的sdk已经不附带有direct show的库了。然后就是vs2003,偶个人还是喜欢vc6,不过毕竟要“与时俱进”嘛,vs2005做的程序总是要发布的时候把.net环境也打包进去,这简直让人无法接受,一个小破程序凭空增大了不少。所以只能马马虎虎选择vs2003了。
 
当然了,必不可少的是一个廉价摄像头,并安装好与之相关的设备驱动程序。以可以用qq或者msn做为摄像头是否装好的检查依据,当然很多摄像头的驱动自带有一个AMCap的软件,也是可以的。必要的时候重启一下机器。
 
(2)建立新的dialog工程
这里需要手工添加CCaptureVideo类,最好用我下面的那个经过修改了的类,网上流传的多数类存在m_pBF没有初始化,以及保存路径不是当前应用程序路径的问题,还要添加direct show的依赖库。我用的是中文版的vs2003(其实是实在懒得再下一遍英文版的)。
 
设定附加lib的库路径:
选择“项目”->“属性”->“链接器”->“常规”->“附加库目录”在这里添加direct show的附加库目录,我得机器上是“D:\\DXSDK\\Lib”。
 
添加direct show的依赖lib,这些都在程序链接的时候必须要用到的:
选择“项目”->“属性”->“链接器”->“输入”->“附加依赖项”在这里添加两个direct show的lib
strmiids.lib Quartz.lib
 
好,到此为止应该编译环境都搭建好了。
 
(3)下载代码,然后编译之
为了方便起见,偶直接把偶调好的整个工程贴上来,节约大家的宝贵时间。这里有一个release目录下面有我编译好的exe(没有sdk也可以跑的),感兴趣的朋友可以直接运行一下体验体验,然后再看代码。
这个只是最简单的单帧视频数据抓取,呵呵,有了这个,我们就可以通过修改代码:
  //设置视频格式
  AM_MEDIA_TYPE mt;
  ZeroMemory(&mt, sizeof(AM_MEDIA_TYPE));
  mt.majortype = MEDIATYPE_Video;
  mt.subtype = MEDIASUBTYPE_RGB24;
// 这里是MEDIASUBTYPE_RGB24,为了保存成bitmap设置的rgb24格式
// 只需要把mt.subtype的类型改为MEDIASUBTYPE_IYUV,也就是我们做视频开发常用的yuv420
// 就可以轻松实现视频流数据抓取了,抓取到的数据可以在BufferCB(...)函数中得到
  hr = m_pGrabber->SetMediaType(&mt);
 
做为视频开发的朋友,我想以后的,关于如何把yuv420送入h264或者mpeg4编码器,就不用我多聒噪了吧。
 


下面代码运行环境:winxp sp2 + vs2003 + direct x 9b sdk

相关源码:http://bbs.rosoo.net/forum.php?mod=viewthread&tid=1087

(陈罡)
本站文章除注明转载外,均为本站原创或编译欢迎任何形式的转载,但请务必注明出处,尊重他人劳动,同学习共成长。转载请注明:文章转载自:罗索实验室 [http://www.rosoo.net/a/201010/10370.html]
本文出处:北京理工大学 20981班 作者:陈罡
顶一下
(2)
100%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片
栏目列表
将本文分享到微信
织梦二维码生成器
推荐内容