前言
参考:Win10 下编译 OpenCV 4.7.0详细全过程,包含xfeatures2d
这里在其基础上还出现了一些问题,仅供参考。
正文
一、环境
1、win10
2、cmake-gui
3、opencv4.7.0
4、VS2019
二、编译过程
1、下载需要的文件:
通过网盘分享的文件:OpenCV4.7.0
链接: https://pan.baidu.com/s/1qb9YwbY34feBp0UzhAnefA?pwd=1111 提取码: 1111
2、在源码目录创建一个build目录,用来放构建后的东西:
3、选择一下目录:
4、选择我们要的:
点击Finish
5、开始排除我们所不要的:
1、不要java->Search中输入java-去掉默认勾选
2、不要python->Search中输入python-去掉默认勾选
3、不要test->Search中输入test->去掉勾选
6、根据自己选择,选择是否要生成一个大的opencv_world库:
7、 配置Configure的时候,要勾选上NONFREE,否者C++ 调用SURF::create会报错
8、如果你只是想编译一个opencv的库,到这里基本就差不多了,加上下面的[1、opencv编译下载失败解决]这个点阐述的问题,基本就能完成了。当然,下面还有打开VS2019进行build的操作,那些都一般不会报错。
但如果你想要将opencv-contrib也编译进去的话,则这个变量要改一下:
拷贝的时候,要记得改一下。
9、然后点击configure就是出现下面的问题了,你可以参考下下面的。
10、config-done之后,点击Generate:
11、然后点击Open Project
12、使用VS2019打开工程后,点击ALL_BUILD,右键 生成
13、生成后,点击INSTALL,右键点击生成。
三、出现的问题
1、opencv编译下载失败解决
1、最好使用手动下载的方式,否则,若使用网上推荐的gitcode的方式,会发现,gitcode opencv的那些文件路径已经是存在问题了。无法成功进行下载。
2、还不如用报错信息里面提供的这种:
https://raw.githubusercontent.com/opencv/opencv_3rdparty/7dd0d4f1d6fe75f05f3d3b5e38cbc96c1a2d2809/ffmpeg/ffmpeg_version.cmake直接去翻墙下载就好了。
具体方案如下:
1、报错IPPICV无法下载:
方案:将这个地址复制出来:
下载这个文件后,放到:这个目录下,修改文件名为里面的那个文件的文件名:
2、ffmpeg对应的dll找不到:
也是同样的道理,放到.cache/ffmpeg里面即可。
3、需要注意的是:
这个文件:
最后右键另存为ffmpeg_version.cmake.txt ->重命名一下->ffmpeg_version.cmake
这样就可以了。
有可能出现ffmpeg 拷贝不到build目录下的3rdparty下面,那你就直接拷贝到那个目录下就好了。
4、若有编译opencv-contrib ,则要注意会报这个错:https://raw.githubusercontent.com/opencv/opencv_3rdparty/8afa57abc8229d611c4937165d20e2a2d9fc5a12/face_landmark_model.dat 缺少这个文件的错,要么你就也是直接下载即可,放到这个下面,替换原来的文件:
5、若有编译opencv-contrib,则会报缺少wechat_qrcode的一系列问题,将这两个文件夹放到这个下面,(downloads需要自己创建)
2、代码笔记24 windows+cmake+opencv4.5.5安装中出现的IPPICV: Download: ippicv_2020_win_intel64_20191018_general.zip问题
参考这篇文章
3、OPENCV_EXTRAL_MODULES_PATH 路径要是反斜杠
https://blog.csdn.net/star_of_science/article/details/104406819)
四、资源
1、编译出的opencv文件:通过网盘分享的文件:VS2019+OpenCV4.7.0+contrib
链接: https://pan.baidu.com/s/14-fuRidOrku20lpcTeywIA?pwd=1111 提取码: 1111
2、编译过程的相关资源
有需要的可以私聊
参考
1、非常值得学习的文章:在源码中寻找opencv3.4.1的自动曝光设置历程-opencv
2、CMake编译OpenCV3.4.6时opencv_ffmpeg.dll等下载失败的解决办法