Windows下OpenCV4.3(包括opencv_contrib-4.3.0)+VS2019从源码编译

Windows下OpenCV4.3+VS2019从源码编译

1.从官网下载opencv、opencv_contrib原文件并解压,然后在opencv解压后文件夹中新建一个build文件夹用于存放编译后文件(opencv_contrib解压路径记住后面用cmake编译会用到) 。
Windows下OpenCV4.3(包括opencv_contrib-4.3.0)+VS2019从源码编译_第1张图片
2. 打开cmake,按下图二配置其中I:\package\opencv-4.3.0是我opencv解压的路径,I:\package\opencv-4.3.0\build是我新建build的路径,然后点击configure并按图三配置(可以根据自己的情况更改)
Windows下OpenCV4.3(包括opencv_contrib-4.3.0)+VS2019从源码编译_第2张图片
Windows下OpenCV4.3(包括opencv_contrib-4.3.0)+VS2019从源码编译_第3张图片
等待片刻后会出些一些选项,各个选项的意思如下(截图来自此处,侵删)
Windows下OpenCV4.3(包括opencv_contrib-4.3.0)+VS2019从源码编译_第4张图片

Windows下OpenCV4.3(包括opencv_contrib-4.3.0)+VS2019从源码编译_第5张图片
Windows下OpenCV4.3(包括opencv_contrib-4.3.0)+VS2019从源码编译_第6张图片
Windows下OpenCV4.3(包括opencv_contrib-4.3.0)+VS2019从源码编译_第7张图片
Windows下OpenCV4.3(包括opencv_contrib-4.3.0)+VS2019从源码编译_第8张图片
这里主要讲两个注意事项
1、首先BUILD_opencv_world勾选问题,勾上在后面编译阶段会生成opencv_worldxxx.lib和对应的动态库dll文件。这两个文件是把编译后所有的lib和dll文件打包起来的。在后面写代码时只要包含这个打包的总文件就行,不用麻烦一个个添加。但带来的问题就是,打包的文件会比较大,如果明确知道只用到部分库文件,推荐不勾选,在以后写代码自己一个个添加,如果是学习opencv的话推荐勾选上,省的每次要一个一个加。

在这里插入图片描述
2、因为要编译opencv_contrib所以OPENCV_ENABLE_NONFREE要勾选上,同时OPENCV_EXTRA_MODULES_PATH要设置对应下载的opencv_contrib文件下modules路径。这里非常重要的是,如果从windows下直接拷贝过来的路径是 D:\download\opencv_contrib-4.3.0\modules

在这里插入图片描述

这里需要把 \ 改为 /。否者会报错 Invalid character escape ‘\d’. Call Stack (most recent call first): modules/CMakeLists.txt:7 (ocv_glob_modules)

Windows下OpenCV4.3(包括opencv_contrib-4.3.0)+VS2019从源码编译_第9张图片

Windows下OpenCV4.3(包括opencv_contrib-4.3.0)+VS2019从源码编译_第10张图片

配好后再点configure,等到看到下图所示

Windows下OpenCV4.3(包括opencv_contrib-4.3.0)+VS2019从源码编译_第11张图片

这里经常会遇到一些文件无法下载如:
Windows下OpenCV4.3(包括opencv_contrib-4.3.0)+VS2019从源码编译_第12张图片

这会导致后面编译失败,如何去解决呢,可以看报的错,去I:/package/opencv-4.3.0/build/CMakeDownloadLog.txt,打开后看见日志
Windows下OpenCV4.3(包括opencv_contrib-4.3.0)+VS2019从源码编译_第13张图片
拿一段出来分析

#do_copy "vgg_generated_80.i" "7cd47228edec52b6d82f46511af325c5" "https://raw.githubusercontent.com/opencv/opencv_3rdparty/fccf7cd6a4b12079f73bbfb21745f9babcd4eb1d/vgg_generated_80.i" "I:/package/opencv-4.3.0/build/downloads/xfeatures2d"
#missing "I:/package/opencv-4.3.0/build/downloads/xfeatures2d/vgg_generated_80.i"
#check_md5 "I:/package/opencv-4.3.0/.cache/xfeatures2d/vgg/7cd47228edec52b6d82f46511af325c5-vgg_generated_80.i"
#mismatch_md5 "I:/package/opencv-4.3.0/.cache/xfeatures2d/vgg/7cd47228edec52b6d82f46511af325c5-vgg_generated_80.i" "d41d8cd98f00b204e9800998ecf8427e"
#delete "I:/package/opencv-4.3.0/.cache/xfeatures2d/vgg/7cd47228edec52b6d82f46511af325c5-vgg_generated_80.i"
#cmake_download "I:/package/opencv-4.3.0/.cache/xfeatures2d/vgg/7cd47228edec52b6d82f46511af325c5-vgg_generated_80.i" "https://raw.githubusercontent.com/opencv/opencv_3rdparty/fccf7cd6a4b12079f73bbfb21745f9babcd4eb1d/vgg_generated_80.i"
#try 1
# timeout on name lookup is not supported
# getaddrinfo(3) failed for raw.githubusercontent.com:443
# Couldn't resolve host 'raw.githubusercontent.com'
# Closing connection 0
# 

可以知道大概意思missing “I:/package/opencv-4.3.0/build/downloads/xfeatures2d/vgg_generated_80.i”。
而这个文件可以从https://raw.githubusercontent.com/opencv/opencv_3rdparty/fccf7cd6a4b12079f73bbfb21745f9babcd4eb1d/vgg_generated_80.i下载,下载下来放在I:/package/opencv-4.3.0/.cache/xfeatures2d/vgg/7cd47228edec52b6d82f46511af325c5-vgg_generated_80.i目录下面。
其他缺失文件类似操作,自己可以看日志操作。如果需要的话我后面上传一下我下载的。

完成后,再点generate,看到下图所示

Windows下OpenCV4.3(包括opencv_contrib-4.3.0)+VS2019从源码编译_第14张图片

接着,就可以点open project打开vs2019按下图所示开始编译。

Windows下OpenCV4.3(包括opencv_contrib-4.3.0)+VS2019从源码编译_第15张图片
剩下就是把编译好的库和头文件设置在自己工程中,图省事的可以直接把编译好的库丢到system32下面,头文件也丢进vs默认路径。这个网上教程也多,坑少,就不写了。

我编译好的opencv+opencv_contrib库文件和头文件需要的自取(windows10 64位,含opencv_world430d.dll和opencv_world430.dll)百度云提取码 7lwx

你可能感兴趣的:(Windows下OpenCV4.3(包括opencv_contrib-4.3.0)+VS2019从源码编译)