利用OpeCV和VideoInput获取多路视频流(Windows端)

参考资料:https://redkiing.wordpress.com/2011/03/02/capture-video-with-opencv-and-videoinput-windows-only/
OpenCV的相机处理接口功能有限,我们可以借助第三方的库来获得更好的处理能力。Theo开发了一种用于Windows系统下的视频获取库VideoInput,可以点击此处获取源代码。
这个库可以独立使用,并且集成到了OpenCV的源代码中,但在搜集资料过程中发现该库的使用比较费劲,环境的配置令人头疼。因此,有比较将必须的文件集成进3rd party文件夹,然后利用这些源文件和cmake构造新的工程,这样,该库的使用则比较简单。
下文中,将展示该工程的构建,并在此封装,得到一个简易的使用方式,得以获取多路摄像头的数据,为方便将其暂记为videoinputplus。

一 文件组织结构
这里写图片描述
二 代码结构
参见videoinputplus 源码(原作者的代码),不再赘述。
三 设置CMake工程
这里写图片描述
此处,在Windows下的为VS2015配置的OpenCV在CMake中是找不到的,此处,利用CMake对OpenCV进行了编译,此类参考
内容较多,关键词为CMake、VS、OpenCV编译等。
在上图中通过configure和Generate后,可以通过Open Project在VS2015中打开。
导入VS2015后,状态如下图:
这里写图片描述
对该工程进行编译,发现出现一系列错误:
1、x64和x86冲突,这个通过配置Debug可以解决。
2、找不到VideoInput.h头文件,这个CmakeLists文件中指定路径了,不知道为啥找不到。。。。
解决方法是自行在属性中配置该头文件路径,或者在源代码中直接完整路径include头文件
3、头文件找到后,又出现一堆链接错误,这是由于videoInput.h中的实现未找到。
在一中的文件组织中有如下文件:
可见该库为.a后缀,在VS中不能识别。
我们需要更换该链接库,我们从Theo的源码中寻找该链接库,在下载的videoInput0.1995版本中,
在如下路径videoInput0.1995\compiledLib\compiledByVS2008中有编译过的链接库,将其拷贝到
videoinputplus源码的相应的链接库位置。
然后在解决方案右键 属性-链接器-输入-附加依赖项中添加该链接库,并在链接器-常规-附加库目录中添加该库所在位置。
4、出现错误如下:
这里写图片描述
将#pragma comment(linker, “/NODEFAULTLIB:atlthunk.lib”)拷贝到头文件下面即可解决。

经过上述过程,不出意外,则可以运行成功。

笔者利用三路摄像头获取数据成功,但需要注意的是不能使用USB分线器,摄像头需要插在电脑自带的USB口或者使用PCL扩展口,否则不具备控制能力。

修改后的完整代码在此
百度云链接:http://pan.baidu.com/s/1hssSXhy 密码:oue7

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值