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捕获视频

利用OpenCV对视频进行处理,还是很方便的,感谢柠檬树博客提供的对视频处理进行简单处理的资料,若需要进行更加深入的研究,比如说捕获的视频的格式是怎样?还需要进一步的学习,现将资料收藏,不然下次能找到...
  • xk_snail
  • xk_snail
  • 2015年04月21日 10:38
  • 481

OpenCV 视频捕捉

OpenCV自带摄像头采集接口cvCaptureFromCAM,只需传一个摄像头编号即可调用。但是我用该接口函数一直不能正常捕捉视频,第一次打开失败,后面几次摄像头灯亮了,但是视频画面一片黑,百思不得...
  • huolianglee
  • huolianglee
  • 2012年09月08日 22:28
  • 4673

OpenCv视频采集

  • 2009年11月26日 15:08
  • 193KB
  • 下载

OpenCv学习笔记——OpenCV捕获视频

本文讲一下如何捕获视频。 从文件中捕获视频 其实使用OpenCV读取视频相当简单,只需要初始化一个VideoCapture对象,打开视频文件,逐帧读取。 程序 下面是简单的Op...
  • yuan13091324
  • yuan13091324
  • 2015年05月18日 10:39
  • 808

OpenCV:从摄像头或AVI文件捕捉视频流并进行边缘检测

//从摄像头或AVI文件捕捉视频流并进行边缘检测 #include #include #include #include int main( int argc, char** argv )...
  • u010002704
  • u010002704
  • 2015年02月11日 15:21
  • 1491

使用OpenCV捕获视频,并保存为视频文件

int main(int argc,char ** argv) { char filename[1024]; if(argc == 1) sprintf(filename,"%s","cam...
  • msesky
  • msesky
  • 2013年02月28日 14:37
  • 13987

opencv视频采集封装qml

这段时间由于项目要做银行卡识别,所以在很早以前就开始了解opencv了。项目前期是用qml搭建的界面,所以这里最好 能封装成qml控件。我们都知道qml是c++的扩展,opencv原本就是用c++实...
  • wanghualin033
  • wanghualin033
  • 2017年10月15日 16:29
  • 306

QT视频捕捉代码

源文来自http://blog.chinaunix.net/u/24981/showart_188687.html这里只公开一种哈:).另外一种效果会好些,代码更简单,但是是公司实现,不敢公开,而且对...
  • Shengguiwei
  • Shengguiwei
  • 2009年12月24日 18:05
  • 725

openCV-Python笔记二:视频捕获

一、从摄像头捕获视频 从摄像头捕获视频,应先创建VideoCapture对象,参数为设备索引号,对于笔记本电脑,传0表示使用其内置摄像头。...
  • djcxym
  • djcxym
  • 2016年08月10日 23:20
  • 1011

opencv摄像头视频捕获工程示例

  • 2015年03月17日 11:07
  • 28.46MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:OpenCV 视频捕捉
举报原因:
原因补充:

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