OpenCV 视频捕捉

原创 2012年09月08日 22:28:49

OpenCV自带摄像头采集接口cvCaptureFromCAM,只需传一个摄像头编号即可调用。但是我用该接口函数一直不能正常捕捉视频,第一次打开失败,后面几次摄像头灯亮了,但是视频画面一片黑,百思不得其解,经过多方查证,可能是OpenCV不支持新摄像头的采集方法。后来尝试用directshow进行采集,directshow+OpenCV采集视频其实早就有人做出来了,我只不过是站在前人的肩膀上而已。网上大部分人都知道用于老师的directshow库结合OpenCV进行采集,但是大部分的directshow提供的下载文件都不全,只有一个cpp文件和一个.h文件,其实整个文件有1M多,我在codeforge上面下载到了一个完整的directshow文件,果然成功了。步骤如下:

操作系统:windows7 64位

OpenCV:1.0

开发环境:vc6.0

原文链接如下

http://www.opencv.org.cn/index.php/%E4%BD%BF%E7%94%A8DirectShow%E9%87%87%E9%9B%86%E5%9B%BE%E5%83%8F

1. 将CameraDS.h CameraDS.cpp以及目录DirectShow复制到你的项目中

2. 菜单 Project->Settings->Settings for:(All configurations)->C/C++->Category(Preprocessor)->Additional include 设置为 DirectShow/Include

3. 菜单 Project->Settings->Settings for:(All configurations)->Link->Category(Input)->Additional library 设置为 DirectShow/Lib

上面并没有直接使用cvCaptureFromCAM接口,而是使用了封装好的CCameraDS类。

OpenCV里面有一大堆陷阱,一不留神就陷进去了,内存泄漏就是其中一个。OpenCV封装的很多函数都有对应的释放函数,释放函数自然有他的道理,不释放的话势必造成内存泄漏,特别是很明显的那些带create字样的函数尤其要注意调用带release字样的释放函数进行释放。我在一个MFC的视频采集的例子里面发现内存消耗不断增长,但是那些很明显的创建函数都释放了,原来是cvLoad这个函数加载了haar后没有调用cvReleaseHaarClassifierCascade进行释放。其实opencv.org这个网站上面的一些例子也有内存泄漏的风险,只是例子都只是没什么循环的直接推出了不容易看出来。


相关文章推荐

基于OPENCV的视频捕捉系统

  • 2011年07月02日 22:43
  • 3.68MB
  • 下载

视频捕捉

Directshow中的视频捕捉 本篇文档主要描述关于用Directshow进行视频开发的一些技术 主要包括下面内容 ·         1关于视频捕捉(About Video Captur...
  • mrliko
  • mrliko
  • 2011年09月30日 16:03
  • 392

DirectSHOW中的视频捕捉 (乱七八糟整理)

DIRECTSHOW中的视频捕捉 -------------------------DirectSHOW 真不好玩............ 本篇文档主要描述关于用Directsho...
  • yulinxx
  • yulinxx
  • 2015年11月10日 11:12
  • 2311

Direcshow中视频捕捉和参数设置报告

Direcshow中视频捕捉和参数设置报告1.      关于视频捕捉(About Video Capture in Dshow)1视频捕捉Graph的构建一个能够捕捉音频或者视频的graph图都称之...
  • mao0514
  • mao0514
  • 2014年09月29日 17:40
  • 1794

DirectShow中多个USB视频捕捉的连接问题

感谢作者,原文地址为:http://blog.sina.com.cn/s/blog_48720e900100rqmx.html, 如果造成任何不便,请联系我删除! 当进行多个USB视频捕捉时,不...

Visual C++编程实现摄像头视频捕捉

摘要:本文主要讲述用Directshow进行视频捕捉(捕捉静态图像)的编程思路,并提供针对摄像头编程的一个视频捕捉类CcaptureVideo和一个示例。   前言   DirectShow是...
  • xuke537
  • xuke537
  • 2012年11月23日 14:12
  • 509

Visual C++编程实现摄像头视频捕捉(2)

前言   DirectShow是微软公司提供的一套在Windows平台上进行流媒体处理的开发包,与DirectX开发包一起发布。DirectShow为多媒体流的捕捉和回放提供了强有力的支持。用D...

Visual C++编程实现摄像头视频捕捉 保存

http://www.mscto.com/vc/2009022674609.html另一个 使用Sample Grabber过滤器扑获图像 Visual C++编程实...
  • jiht594
  • jiht594
  • 2011年11月29日 16:21
  • 1470

多个USB视频捕捉的连接问题

继续转载自己的文章。。。。 当进行多个USB视频捕捉时,不是每个USB插口都能插上一个USB摄像头。如果这样做的话,结果可能是屏幕一片空白,什么都没有,因为摄像头初始化会出错,导致程...

Directshow(SDK)学习笔记九_视频捕捉

Directshow(SDK)学习笔记九_视频捕捉摘要:本篇文档主要描述关于用Directshow进行视频开发的一些技术主要包括下面内容 1关于视频捕捉(About Video Capture in ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:OpenCV 视频捕捉
举报原因:
原因补充:

(最多只允许输入30个字)