1.下载文件
下载cmake,vs2019,opencv源码及其扩展包
OpenCV源码
OpenCV扩展包
2.安装和解压
安装vs2019,cmake;解压opencv源码及其扩展包(版本要对应)
这就是源码包解压后的文件夹,我的是4.3.0版本的,
其扩展包opencv_contrib文件夹我也解压放到里面了
3.cmake配置和生成
第一个框框为刚刚解压的源码文件夹路径D:/OpenCV/sources4.3.0
第二个框框为保存建造文件的路径D:/OpenCV/build4.3.0
选择好上面的路径后,
点击Configure,
选择对应的编译器和架构(我用的是vs2019和64位平台)
等待。
这时一般会有报错,主要是有一些第三方库在国内不能直接下载。
会造成文件大小为0KB。
(文件先别删,它的文件名需要作为到我们手动下载的文件的文件名,
因为前的那串串码是验证码,没有它是用不了的,弄好这一步再把0KB文件删去)
解决方法:
接下来主要的是对D:\OpenCV\sources4.3.0\.cache这个文件夹里面不能下载的文件进行补全,
缺失的文件会在./cache生成文件夹,
如configure阶段会ippicv,ffmpeg文件夹;
generate阶段可能有nvidia_optical_flow,xfeatures2d,data文件夹。
缺少什么文件主要是看选择那些功能进行编译。
-------------------------------------------------------------------------------------------------------
(这一步可以跳过,这个只是解决问题的流程,下面会有个人总结简便的方法)
这时来保存建造文件的路径查看CMakeDownloadLog.txt
**==================================================================**
里面有出错文件的下载地址,但是呢很可惜,国内访问不了.
实施曲线救国的道路:
cmake编译时缺失的文件下载(这个链接很重要,能不能补全文件就看他了)
好了,既然链接有了,发现网速很慢,没关系,接下来的操作才是重点(忙活了好久):
ps:打开链接,将相应的文件链接复制到到手机上,用手机的网络下载,在发送到电脑上.将文件复制到(如若科学上网请无视此操作)
需要注意的是,下载的文件需要与opencv的版本对应
ippicv报错说找不到哪个文件就下载哪个文件,这个看文件名是否一样就好了,需要注意的是下载的是否为Windows64位系统的文件.
ffmpeg这里有很多个,需要选择与opencv版本对应的下载.怎么选呢?
选中下载opencv的版本
(或者到下载好的OpenCV源码里面的opencv/3rdparty/ffmpeg/ffmpeg.cmake这个目录下的这个文件查看)
#Binaries branch name: ffmpeg/master_20200311
得知应下载带20200311的(一定要对应)
nvidia_optical_flow,xfeatures2d,data看到带有时间的选就对了
(不带时间的里面什么都没有)
将下载的文件复制到.cache文件夹下对应的文件夹(不是直接丢到.cache这个文件夹就行了,
是放到.cache下对应的文件夹下。打字太累了,好好研究一下应该是可以放对的)。
并复制0kb文件的文件名给手动下载的文件重命名。
但是需要注意的是ffmpeg_version.cmake这个文件是不能直接手动下载的成一个文件的,
浏览器打开这个文件的网址,里面是一些文本,可以尝试将这些文本复制到电脑上的…ffmpeg_version.cmake文件中,
如果报错,那就将这个网页另存为一个文件,将保存的网页文件重命名为…(MD5)+ffmpeg_version.cmake(也就是0kb的那个.cmake文件的文件名)。
直接选择复制文本会出错的原因可能是因为格式错误。
缺失的文件夹不是一次性就出现的,
需要多次选择Configure要一步步来,
我这里第一次Configure出现了ippicv,
补全ippicv后.第二次Configure才出现ffmpeg。
这个报错不用管,影响不了大局.(Configure,generate都会报这个错,不过对编译结果都没有影响)
也可以选择在搜索栏搜索gensetupvars,然后报那个勾勾去掉。
完成Configure后
添加opencv_contrib包的这个到路径:D:/OpenCV/sources4.3.0/opencv_contrib/modules到
cmake(是opencv_contrib/modules),选择添加路径的位置如下图。
不需要Java开发就在search搜索Java,把Java相关的勾勾去掉
其他语言以此类推
cuda加速初学也不到(话是这么说但是我还是加cuda编译了)
有需要就自行选择,不过需要安装CUDA。
如果想最后只生成一个链接库文件,
而不是每个模块都产生一个链接库,需构选opencv_world.
OPENCV_ENABLE_NONFREE √ ( SIFT SURF等算法需要的√)
出现:CMake Warning at cmake/OpenCVGenSetupVars.cmake:(message):
CONFIGURATION IS NOT SUPPORTED: validate setupvars script in install directory
选择去除 OPENCV_GENERATE_SETUPVARS选项.
点击generate
等一会会报错
用上述方法补全文件
generate完成
4.vs2019编译
open Project打开工程
或者在D:\OpenCV\build4.3.0知道OpenCV.sln用vs2019打开
生成->配置管理器
有debug和release配置选择,编译生成对应配置的库即可,
我一般用debug,我就生成debug的库。
生成安装目录,即将include,bin和lib目录提取出来,在“"中勾选install项目。
(建议只生成安装目录(INSTALL),不用勾选ALL_BUILD,毕竟我们只需要install)
需要哪种配置就选哪种配置就好,不然编译时间久。
5.添加环境变量
不想打字了…
接下来的操作看这里吧,方法大同小异,只不过操作的路径全都需要替换为
D:/OpenCV/build4.3.0/install文件夹下的操作
而不是D:/OpenCV/build4.3.0文件的操作。
例如添加的环境变量为D:\OpenCV\build4.3.0\install\x64\vc16\bin
VS2019配置OpenCV
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
用clion的就是
这个库编译好后,我自己在clion上跑了.写在这里做个记录
附上cmakelists.txt的配置文件我(我这库没由生安装目录)
所以是set(OpenCV_DIR D:\\OpenCV\\build4.3.0)//应该主要是看下图文件在哪吧
cmake_minimum_required(VERSION 3.17) project(OpenCV_trait) set(CMAKE_CXX_STANDARD 14) #set(OpenCV_DIR D:\\OpenCV\\build\\x64\\vc15\\lib) set(OpenCV_DIR D:\\OpenCV\\build4.3.0) find_package(OpenCV REQUIRED) include_directories(${OpenCV_INCLUDE_DIRS})** add_executable(OpenCV_trait main.cpp) target_link_libraries(OpenCV_trait ${OpenCV_LIBS})**
上传不了,点了都没反应(应该是我不会用吧)。
需要OpenCV4.3.0的./cache百度云见。
链接:https://pan.baidu.com/s/1Tgmjtjwz5NuFOCHISBzEJA
提取码:qqz8
复制这段内容后打开百度网盘手机App,操作更方便哦