VS2019+openCV4.5+openCV4.5 contrib扩展模块安装
1、VS2019安装
首先第一步安装VS2019。
https://visualstudio.microsoft.com/zh-hans/vs/
社区版免费,只要登陆账号即可。
2、opencv和扩展模块下载
OpenCV4.5下载链接:https://opencv.org/releases/
OpenCV4.5 contrib下载链接:https://github.com/opencv/opencv_contrib/releases
Cmaker下载链接:https://cmake.org/download/
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIyZuBnLyMjM2MTOyYTMyIjMxAjMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
首先找到并解压cmaker,然后在bin文件夹下找到cmaker-gui.exe,点击即可。
然后,在where is source code中浏览到OpenCV4.5的source文件夹,where to build the binaries浏览到你新建立的空文件夹.
之后点击Configure,会弹出让你选择VS版本,在这里我们选择VS2019,但请注意,下面Optional toolset to use选择x64.
点击finish之后,点击configure,会出现大片红色,这里,先更改红色中的部分选项:
- 手动勾选BUILD_opencv_world。勾BUILD_opencv_world,主要是把所有的lib文件都弄到一个opencv_world450d.lib中方便配置,若不勾选在最后会产生大量.lib文件,导致最后配置Opencv到vs会太麻烦,有过OpenCV动态链接库的人都知道;
- OPENCV_ENABLE_NONFREE是为了在编译成功后可以使用具有专利保护的算法,如果该变量不被选中,就不能使用例如SIFT算法在内的具有专利保护的算法,;
- 找到“OPENCV_EXTRA_MODULES_PATH”变量,该变量的含义是告诉编译器扩展包的源码在哪里,选择我们刚才下载的opencv_contrib安装包里的modules文件夹。如果这个变量为空,在编译过程中也不会报错,只是安装了OpenCV的基础版。
勾选完上述操作后,再次点击configure·,直至所有的都变白,但还是要注意下面画红框的是否报错,如果有报错,你不管,后面的步骤还会在出错,进行不下去.
下面我们对cmaker出现错误进行解读,节选自其他博客,加上自己理解:
这几个错误是类似的就是Download failed。那只能手动下载了(没网络的换个有网的下载,下载一直失败也直接手动下载,手动下载不了的试着打开vpn),那么问题来了。
去哪里下载?
下载后放哪里?
仔细看错误信息,可以打开download log file看看,如提示,我的在D:\opencv_4.5\opencv_contrib\opencv_build/CMakeDownloadLog.txt,打开可以看到如下内容:
CMake后会发现source根目录下会出现一个.cache的文件夹,里面有需要下载的内容,如果下载失败所有的内容都是0KB(只是路径图)如下图:
再看看CMakeDownloadLog.txt的第一句:use_cache "D:/Kits/OpenCV/opencv-source/opencv-4.5/.cache"说的就是这个意思。在看看第二句:do_copy “opencv_ffmpeg.dll” “b8120c07962d591e2e9071a1bf566fd0” “https://raw.githubusercontent.com/opencv/opencv_3rdparty/0a0e88972a7ea97708378d0488a65f83e7cc5e69/ffmpeg/opencv_ffmpeg.dll” “D:/Kits/OpenCV/opencv-source/opencv-4.5/build/3rdparty/ffmpeg”,说的是从https://raw.githubusercontent.com/opencv/opencv_3rdparty/0a0e88972a7ea97708378d0488a65f83e7cc5e69/ffmpeg/opencv_ffmpeg.dll这个网址下载opencv_ffmpeg.dll到D:/Kits/OpenCV/opencv-source/opencv-4.5/build/3rdparty/ffmpeg,其MD值为b8120c07962d591e2e9071a1bf566fd0,然后拷贝到.cache对应的文件夹下(该文件名为MD值+’-’+下载的文件名(也可以复制原本的要下载文件的文件名))。那么这个文件就类似脚本进行自动化下载,那么我们就知道手动要怎么搞了。
回答-去哪里下载:
https://raw.githubusercontent.com/opencv/opencv_3rdparty/0a0e88972a7ea97708378d0488a65f83e7cc5e69/ffmpeg/opencv_ffmpeg.dll
回答-下载后放哪里:
很显然下载后放.cache下对应的地方,然后改其名字为MD值+’-’+下载的文件名。比如opencv_ffmpeg.dll这个文件下载后凡在.cache下的ffmpeg下,然后改名为b8120c07962d591e2e9071a1bf566fd0-opencv_ffmpeg.dll替换原来0KB的那个文件。
整个过程大概就是这样,但有几点特别重要:
- https://raw.githubusercontent.com/opencv/opencv_3rdparty/fe71c0ad807fdc33c2178e48e488f1e9b177c39a/ffmpeg/ffmpeg_version.cmake 无法直接下载,而是直接打开了ffmpeg_version.cmake,可以右键网页选择另存为 ffmpeg_version.cmake.txt,然后再改为ffmpeg_version.cmake。这里如果自己新建一个txt,然后直接将网页上的内容拷进去,然后再该后缀为.cmake是不行的,会提示md5不匹配。
-
将 ippicv.cmake 的https://raw.githubusercontent.com
修改为:https://raw.staticdn.net 根本不行
- 下载.i文件时,打开网址直接显示文档,一定要将网页另存为.i 文件,如果复制的话是不能用的。
- 打开vpn。
最后再次CMake-Configure就成功通过了
后面就比较简单了,网上讲的人也比较多,我就写到这吧。