出于稳定性考虑,Opencv3官方一直没有加入Opencv2中存在的模块,比如像feature2d模块,其中包含了SURF、SIFT这些经典的图像算法。如果想要在Opencv3中使用这些算法,要自己动手从Opencv_contrib模块中编译生成库使用。而今天想要说的重点是用Opencv3.4与Opencv_contrib模块联合编译,生成能够使用CUDA加速的GPU模块,也就是俗称的Opencv GPU版。
做图像这方面工作的小伙伴应该都会有一个困扰,当需要用稍复杂一点的算法处理实时性要求非常高的图像的时候,比如处理高清数字视频流,就经常会出现卡顿,处理跟不上播放速度。按理说这样专业的应用应该用专门DSP平台完成,但是毕竟不是每个PC平台的工程师都懂DSP的啊~所以采用能够使用CUDA加速的GPU模块在一定程度上能够解决这种尴尬的局面。当然也不是说GPU版的Opencv 就一定快,它的使用还有很多门道,使用不当可能速度还不如cpu版的呢。使用什么的现在先不说了,现在先来看怎样把GPU版的opencv变得可用。
准备工具:
- 编译神器CMake,这个建议下一个GUI版的,好操作,我这里用的是CMake 3.11
- IDE平台VS2015,或者VS2013,VS2017都可以
- CUDA9.0或者8.0都可以,正确安装好
- opencv的源码,就是opencv文件夹下的source文件夹,还有opencv_contrib源码,建议从github上获取,注意版本的对应,这里我用的是opencv3.4,所以opencv_contrib也是3.4的。下载网址:https://github.com/opencv
第一阶段:使用CMake编译
选好opencv的源码,就是那个source文件夹的位置,再选好你想把这个库编译到哪里,我直接把它放到了D:/opencv_contrib3.4,这个随个人习惯。选好之后点configure,如果这个文件夹不存在它会提示你新建,确定。
接下来是关键的一步,选你的VS版本,这里一定要选对是哪一版,2015还是2017,32位还是64位,不然后面会出现奇奇怪怪的错误。我这里用的是64位的VS2015。建议都使用64位的,好像官方的opencv3都不支持32位的,从来没有见过。
点Finished,等读条,生成工程。完成后可以检查一下窗口下部的框,如果正确安装好了CUDA,会有CUDA detected+版本号的信息。