一、下载opencv对应安装包及扩展包
(1)opencv安装包下载
Opencv_contribute GitHub 下载点击opencv_contrib进入后搜索下载所需要的版本
因国内镜像原因,下载速度会较慢,且容易断掉,这里提供4.0.0版本的网盘下载地址:
链接: https://pan.baidu.com/s/16olmX0csQRdlBhEotqn_tA 提取码: ev2y
(2)下载解压后的文件夹如下:
其中:
opencv是.exe安装解压后的文件夹,opencv_contrib-4.0.0是从github下载的扩展包,
opencv-4.0.0_build_x64是用于后面cmake存放编译文件的自定义文件夹。
二、cmake下载
官网下载:https://cmake.org/download/
安装时选择对应平台即可,我是选择win64 x64.
三、cmake
(1)configure
1、2 步后点开configure
设置完点击Finish
configure后出现如下红色字体警告的解决方法:
1.是否断网,若为断网,重新连接后再次configure;
2.因国内网络原因无法自动下载,则进行手动下载:
1)打开编译输出的文件夹,找到打开CMakeDownloadLog.txt
部分信息如下:
1 #use_cache "F:/opencv400/opencv/sources/.cache" 2 #do_copy "opencv_ffmpeg.dll" "849286ccc527c99e5a218b67f13c6e8c" "https://raw.githubusercontent.com/opencv/opencv_3rdparty/759a23e24ab787a0979f8a93103dcc3105ec10c1/ffmpeg/opencv_ffmpeg.dll" "F:/opencv4.0.0/opencv-4.0.0_build_x64/3rdparty/ffmpeg" 3 #missing "F:/opencv4.0.0/opencv-4.0.0_build_x64/3rdparty/ffmpeg/opencv_ffmpeg.dll" 4 #check_md5 "F:/opencv400/opencv/sources/.cache/ffmpeg/849286ccc527c99e5a218b67f13c6e8c-opencv_ffmpeg.dll" 5 #mismatch_md5 "F:/opencv400/opencv/sources/.cache/ffmpeg/849286ccc527c99e5a218b67f13c6e8c-opencv_ffmpeg.dll" "d41d8cd98f00b204e9800998ecf8427e" 6 #delete "F:/opencv400/opencv/sources/.cache/ffmpeg/849286ccc527c99e5a218b67f13c6e8c-opencv_ffmpeg.dll" 7 #cmake_download "F:/opencv400/opencv/sources/.cache/ffmpeg/849286ccc527c99e5a218b67f13c6e8c-opencv_ffmpeg.dll" "https://raw.githubusercontent.com/opencv/opencv_3rdparty/759a23e24ab787a0979f8a93103dcc3105ec10c1/ffmpeg/opencv_ffmpeg.dll" 8 # timeout on name lookup is not supported 9 # Trying 173.252.110.21:443... 10 # TCP_NODELAY set 11 # connect to 173.252.110.21 port 443 failed: Timed out 12 # Failed to connect to raw.githubusercontent.com port 443: Timed out 13 # Closing connection 0 14 #
大致意思,就是无法从:"F:/opencv400/opencv/sources/.cache"复制 签名为"849286ccc527c99e5a218b67f13c6e8c"、下载地址为
"https://raw.githubusercontent.com/opencv/opencv_3rdparty/759a23e24ab787a0979f8a93103dcc3105ec10c1/ffmpeg/opencv_ffmpeg.dll"的
"opencv_ffmpeg.dll"到"F:/opencv4.0.0/opencv-4.0.0_build_x64/3rdparty/ffmpeg/opencv_ffmpeg.dll"
因此,我们直接从下载地址下载"opencv_ffmpeg.dll"更改名字为"签名-opencv_ffmpeg.dll"(-opencv_ffmpeg.dll只是对照所贴文本举例子,具体需对照txt内容更改)至"F:/opencv400/opencv/sources/.cache"
或者不更改名字直接存放到"F:/opencv4.0.0/opencv-4.0.0_build_x64/3rdparty/ffmpeg/"。
其他缺失文件照以上步骤进行替换。
注意:打开下载.cmake时不是直接下载文件,而是网页显示,此时右键另存为即可:
2)如果有其他缺失的文件,如安装包,对照CMakeDownloadLog.txt下载改名存放至对应文件夹即可,下载完后重新configure,configure done后不会出现之前的警告项。
3)勾选OPENCV_ENABLE_NONFREE,并选择路径至我们扩展包下的modules文件夹
4)后续只生成一个opencv_world400.dll文件时则需勾选以下选项
再次点击Configure后如果还是会有文件缺少的情况,照上面步骤手动下载。下载完后继续Configure直至提示框没有警告(PS:太艰辛了)。
(2)如果configure后信息输出窗口没有红色警告,点击Generate,Generate done 后 Open Project,会自动VS打开解决方案 Opencv.sln
四、VS编译生成Opencv库文件
1、选择模式及对应平台后生成解决方案;
问题及解决(未出现可直接进入第2步):出现LNK1104.... cannot open file '…\lib\Debug\opencv_world40d.lib’的问题,网上查了一下说是win10 SDK版本低的问题,所以就先下载安装一个较最新的SDK,
划重点:VS2015 对应的win10 SDK不要超过14393,看这里:https://blog.csdn.net/Namcodream521/article/details/78493921,(PS:这会我已经装了18362...)
win10 SDK下载地址:https://developer.microsoft.com/en-us/windows/downloads/windows-10-sdk,(PS:划重点)这个时候需要把旧的SDK版本卸载,然后重新Configure、Generate、Open Project。
这时在cmake里面会提示win10 SDK版本,如果没卸载旧的SDK,它还是会使用旧的make(PS:一把鼻涕一把泪啊...)...
Open Project后进入VS需先设置win 10 SDK,不能直接生成(PS:又有一个坑...),设置过程如下图:
确定后生成解决方案(PS:还是会有错误提示,2333....),同样是LNK1104.... cannot open file '…\lib\Debug\opencv_world400d.lib’这个错误,重新定位一下,lib没生成,那就先单独生成opencv_world400d.lib,
找到opencv_world,右键仅生成该项目,出现rc.exe未启动(PS:定位到了问题,仿佛看到了希望)
按网上所说,将rc.exe的路径添加至系统变量,重启VS...
继续单独生成opencv_world400.lib...还是不行(PS:崩溃)
这个时候,试着把windows目标平台 切换为8.1,神奇般的可以正常生成了.所以我一开始不能生成的原因可能不是因为我的win10 sdk太低,而是太高,导致不支持VS2015...出现rc.exe无法启动的各种情况.
2、仅生成INSTALL
五、编译完成
此时该目录下的文件及文件夹就跟从官网下载.exe安装解压后的一样.....