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

一 文件组织结构

zynq opencv播放video_windows


二 代码结构

参见videoinputplus 源码(原作者的代码),不再赘述。

三 设置CMake工程

zynq opencv播放video_videoinput_02


此处,在Windows下的为VS2015配置的OpenCV在CMake中是找不到的,此处,利用CMake对OpenCV进行了编译,此类参考

内容较多,关键词为CMake、VS、OpenCV编译等。

在上图中通过configure和Generate后,可以通过Open Project在VS2015中打开。

导入VS2015后,状态如下图:

zynq opencv播放video_视频流_03


对该工程进行编译,发现出现一系列错误:

1、x64和x86冲突,这个通过配置Debug可以解决。

2、找不到VideoInput.h头文件,这个CmakeLists文件中指定路径了,不知道为啥找不到。。。。

解决方法是自行在属性中配置该头文件路径,或者在源代码中直接完整路径include头文件

3、头文件找到后,又出现一堆链接错误,这是由于videoInput.h中的实现未找到。

在一中的文件组织中有如下文件:

可见该库为.a后缀,在VS中不能识别。

我们需要更换该链接库,我们从Theo的源码中寻找该链接库,在下载的videoInput0.1995版本中,

在如下路径videoInput0.1995\compiledLib\compiledByVS2008中有编译过的链接库,将其拷贝到

videoinputplus源码的相应的链接库位置。

然后在解决方案右键 属性-链接器-输入-附加依赖项中添加该链接库,并在链接器-常规-附加库目录中添加该库所在位置。

4、出现错误如下:

zynq opencv播放video_视频流_04


将#pragma comment(linker, “/NODEFAULTLIB:atlthunk.lib”)拷贝到头文件下面即可解决。

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

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

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