DirectShow摄像头拍照与图片保存

调用摄像头拍照和保存图片,这事儿说简单也不简单。你得先搞清楚系统支持啥,有没有装对东西,别一上来就敲代码。Windows 上用得比较多的就是DirectShowWindows Media Foundation。老系统用前者,新系统用后者,挺稳定的。

DirectShow 的套路是建个Capture Graph,把摄像头源接上去,再接个预览窗口媒体控制接口。流程有点老派,但用惯了也顺手。你要截图,就得监听新帧事件,把帧数据取出来。听着麻烦,其实也就几步。

Windows Media Foundation 就现代多了。搞个Media Session,绑上设备源,设置分辨率和帧率,基本就能跑起来。截图用事件抓取,保存用 WIC 那套,像MFCreateBitmapSourceMFCreateWICBitmapSink这类接口,稍微摸下文档就知道怎么用了。

图片保存嘛,记得格式转换。原始帧一般是YUVRGB格式,要存成JPEGPNG就得转一下。DirectShow 里可以加个编码器过滤器,Media Foundation 那边也有对应。别忘了释放资源,GraphBuilder 要停,Session 要关,接口都要Release,不然会崩。

VS2008 虽然老了点,但还挺好用的。C++直接搞COM 接口,.NET 那边可以用Managed DirectShow,图方便的可以试试AForge.NETEmgu CV,这些库都封装好了,写起来省事多了。

如果你是做桌面程序或者设备工具开发的,这一套用得挺频繁的。提前查清楚系统环境和目标设备,选好库就不会绕远路。哦对了,下面这几个参考链接也可以看看,挺有的:

rar 文件大小:41.27KB