Windows环境使用VS2017编译opencv-4.2.0和opencv_contrib-4.2.0源码,支持TBB

简介: Windows环境使用VS2017编译opencv-4.2.0和opencv_contrib-4.2.0源码,支持TBB

一、准备工作


cmake v3.15.7 x64:https://cmake.org/files/v3.15/


opencv-4.2.0: https://github.com/opencv/opencv/releases


opencv_contrib-4.2.0: https://github.com/opencv/opencv_contrib/releases


tbb-2019_U9: https://github.com/intel/tbb/releases


opencv分为x86和x64编译,VS2017

image.png


image.png


image.png




二、VS2017编译TBB


去官网下载TBB的源码,解压,然后:


使用VS2017打开工程文件tbb-2019_U9\build\vs2013\makefile.sln,直接编译即可,分别编译x86和x64,生成动态库。



三、配置CMake的编译选项


去掉勾选 BUILD_DOCS、BUILD_EXAMPLES、BUILD_TESTS,为了节省时间


勾选WITH_TBB, 实现并行处理。不需勾选BUILD_TBB和MKL_WITH_TBB,这两项维持默认值即可。


F:\Machine Vision\OpenCV\source\opencv-4.2.0\modules\core\src\parallel.cpp里面有很多宏定义#if defined HAVE_TBB


如果不使能TBB的话,opencv-4.2.0自带并默认使用了微软的PPL并行库。#define HAVE_CONCURRENCY


编译平台对应关系是Visual Studio 2010(即宏 _MSC_VER = 1600)


#if defined _MSC_VER && _MSC_VER >= 1600
    #define HAVE_CONCURRENCY
#endif
/* IMPORTANT: always use the same order of defines
   - HAVE_TBB         - 3rdparty library, should be explicitly enabled
   - HAVE_HPX         - 3rdparty library, should be explicitly enabled
   - HAVE_OPENMP      - integrated to compiler, should be explicitly enabled
   - HAVE_GCD         - system wide, used automatically        (APPLE only)
   - WINRT            - system wide, used automatically        (Windows RT only)
   - HAVE_CONCURRENCY - part of runtime, used automatically    (Windows only - MSVS 10, MSVS 11)
   - HAVE_PTHREADS_PF - pthreads if available
*/
#if defined HAVE_TBB
    #include "tbb/tbb.h"
    #include "tbb/task.h"
    #include "tbb/tbb_stddef.h"
    #if TBB_INTERFACE_VERSION >= 8000
        #include "tbb/task_arena.h"
    #endif
    #undef min
    #undef max
#elif defined HAVE_HPX
    #include <hpx/parallel/algorithms/for_loop.hpp>
    #include <hpx/parallel/execution.hpp>
    //
    #include <hpx/hpx_start.hpp>
    #include <hpx/hpx_suspend.hpp>
    #include <hpx/include/apply.hpp>
    #include <hpx/util/yield_while.hpp>
    #include <hpx/include/threadmanager.hpp>
#elif defined HAVE_OPENMP
    #include <omp.h>
#elif defined HAVE_GCD
    #include <dispatch/dispatch.h>
    #include <pthread.h>
#elif defined WINRT && _MSC_VER < 1900
    #include <ppltasks.h>
#elif defined HAVE_CONCURRENCY
    #include <ppl.h>
#endif

勾选OPENCV_ENABLE_NONFREE,如果没有勾选,那么类似SIFT这种已经被申请专利的方法就无法使用。


搜索OPENCV_EXTRA_MODULES_PATH

然后在value中填入源码包opencv_contrib解压目录中的modules路径(注意:此处路径的反斜杠\要改成正斜杠/,反斜杠\有转义字符的意思)。

错误的 F:\Machine Vision\OpenCV\source\opencv_contrib-4.2.0\modules

正确的 F:/Machine Vision/OpenCV/source/opencv_contrib-4.2.0/modules


可选项,默认已勾选 BUILD_SHARED_LIBS,取决于你想把库编译为动态库还是静态库,我在本篇教程使用默认值:动态库(已勾选)


可选项,默认未勾选 BUILD_opencv_world,取决于你是否想把所有的dll动态库都整合为1个文件,我在本篇教程使用默认值,没勾选


以上配置选项准备完毕后,点击按钮“Configure”。



四、下载ipp和ffmpeg文件


点击按钮“Configure”之后,准备过程会下载以下几个文件:


ippicv_2019_win_ia32_20180723_general.zip


opencv_videoio_ffmpeg.dll


opencv_videoio_ffmpeg_64.dll


ffmpeg_version.cmake


这几个文件下载完,会分别存储在路径:


opencv-4.2.0\.cache\ippicv

opencv-4.2.0\.cache\ffmpeg


cmake configure过程的输出日志是:


opencv-4.2.0\build_x86\CMakeDownloadLog.txt


如果上述文件下载失败,CMake会红色字体报错,打开日志CMakeDownloadLog.txt,可以看到:


https://raw.githubusercontent.com/opencv/opencv_3rdparty/32e315a5b106a7b89dbed51c28f8120a48b368b4/ippicv/ippicv_2019_win_ia32_20180723_general.zip

https://raw.githubusercontent.com/opencv/opencv_3rdparty/a66a24e9f410ae05da4baeeb8b451912664ce49c/ffmpeg/opencv_videoio_ffmpeg.dll

https://raw.githubusercontent.com/opencv/opencv_3rdparty/a66a24e9f410ae05da4baeeb8b451912664ce49c/ffmpeg/opencv_videoio_ffmpeg_64.dll

https://raw.githubusercontent.com/opencv/opencv_3rdparty/a66a24e9f410ae05da4baeeb8b451912664ce49c/ffmpeg/ffmpeg_version.cmake

#check_md5 "F:/Machine Vision/OpenCV/source/opencv-4.2.0/.cache/ippicv/0157251a2eb9cd63a3ebc7eed0f3e59e-ippicv_2019_win_ia32_20180723_general.zip"

#check_md5 "F:/Machine Vision/OpenCV/source/opencv-4.2.0/.cache/ffmpeg/5de6044cad9398549e57bc46fc13908d-opencv_videoio_ffmpeg.dll"

#check_md5 "F:/Machine Vision/OpenCV/source/opencv-4.2.0/.cache/ffmpeg/55c0bc8ad27db00116fabf06508de196-opencv_videoio_ffmpeg_64.dll"

#check_md5 "F:/Machine Vision/OpenCV/source/opencv-4.2.0/.cache/ffmpeg/ad57c038ba34b868277ccbe6dd0f9602-ffmpeg_version.cmake"

opencv-4.2.0\build_x86\3rdparty\ffmpeg

opencv-4.2.0\build_x86\3rdparty\ippicv

日志记录了需要下载的url,和它们对应的MD5值。可以自己打开网址下载文件,然后重命名为


0157251a2eb9cd63a3ebc7eed0f3e59e-ippicv_2019_win_ia32_20180723_general.zip


5de6044cad9398549e57bc46fc13908d-opencv_videoio_ffmpeg.dll


55c0bc8ad27db00116fabf06508de196-opencv_videoio_ffmpeg_64.dll


ad57c038ba34b868277ccbe6dd0f9602-ffmpeg_version.cmake


此外,以下文件也是需要下载的,网址在CMakeDownloadLog.txt都有描述。


boostdesc_bgm.i

boostdesc_bgm_bi.i

boostdesc_bgm_hd.i

boostdesc_lbgm.i

boostdesc_binboost_064.i

boostdesc_binboost_128.i

boostdesc_binboost_256.i

vgg_generated_120.i

vgg_generated_64.i

vgg_generated_80.i

vgg_generated_48.i

这里附上我自己下载成功的文件,如果读者下载失败,可以使用我的。[见文章末尾附件]



五、配置CMake的TBB头文件和库


经过前面步骤的Configure,搜索TBB_,会有TBB的选项跑出来,需要填写:(截图仅举例x86的情况,x64一样)


image.png


x86


F:/Machine Vision/OpenCV/source/tbb-2019_U9/include

F:/Machine Vision/OpenCV/source/tbb-2019_U9/build/vs2013/Win32/Release/tbb.lib

F:/Machine Vision/OpenCV/source/tbb-2019_U9/build/vs2013/Win32/Debug/tbb_debug.lib

F:/Machine Vision/OpenCV/source/tbb-2019_U9/include/tbb/tbb_stddef.h


x64


F:/Machine Vision/OpenCV/source/tbb-2019_U9/include

F:/Machine Vision/OpenCV/source/tbb-2019_U9/build/vs2013/x64/Release/tbb.lib

F:/Machine Vision/OpenCV/source/tbb-2019_U9/build/vs2013/x64/Debug/tbb_debug.lib

F:/Machine Vision/OpenCV/source/tbb-2019_U9/include/tbb/tbb_stddef.h


执行Configure,再次执行Configure(因为TBB_VER_FILE字段此时才跑出来),然后Generate,最后Open Project,打开VS工程...


源码F:\Machine Vision\OpenCV\source\opencv-4.2.0\build_x86\cvconfig.h,可以看到宏HAVE_TBB已定义!


/* Intel Threading Building Blocks */

#define HAVE_TBB


六、VS-生成-批生成


1、\opencv-4.2.0\build_x86\OpenCV.sln


2、\opencv-4.2.0\build_x64\OpenCV.sln


image.png



七、附件


1、编译opencv-4.2.0需要的opencv_videoio_ffmpeg.dll,opencv_videoio_ffmpeg_64.dll


https://download.csdn.net/download/libaineu2004/12150698


2、tbb-2019_U9源码和vs2017编译生成的库


https://download.csdn.net/download/libaineu2004/12150701


3、opencv-4.2.0编译的库文件和测试案例


https://download.csdn.net/download/libaineu2004/12150708







---


参考文献


https://blog.csdn.net/weijifen000/article/details/93377143


https://blog.csdn.net/gggttt222/article/details/79482033

————————————————

版权声明:本文为CSDN博主「libaineu2004」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/libaineu2004/article/details/104252289

相关文章
|
1月前
|
机器学习/深度学习 监控 算法
基于计算机视觉(opencv)的运动计数(运动辅助)系统-源码+注释+报告
基于计算机视觉(opencv)的运动计数(运动辅助)系统-源码+注释+报告
49 3
|
1月前
|
缓存 并行计算 Ubuntu
Jetson 学习笔记(十一):jetson agx xavier 源码编译ffmpeg(3.4.1)和opencv(3.4.0)
本文是关于在Jetson AGX Xavier上编译FFmpeg(3.4.1)和OpenCV(3.4.0)的详细教程,包括编译需求、步骤、测试和可能遇到的问题及其解决方案。还提供了Jetson AGX Xavier编译CUDA版本的OpenCV 4.5.0的相关信息。
68 4
Jetson 学习笔记(十一):jetson agx xavier 源码编译ffmpeg(3.4.1)和opencv(3.4.0)
|
1月前
|
Ubuntu 应用服务中间件 nginx
Ubuntu安装笔记(三):ffmpeg(3.2.16)源码编译opencv(3.4.0)
本文是关于Ubuntu系统中使用ffmpeg 3.2.16源码编译OpenCV 3.4.0的安装笔记,包括安装ffmpeg、编译OpenCV、卸载OpenCV以及常见报错处理。
147 2
Ubuntu安装笔记(三):ffmpeg(3.2.16)源码编译opencv(3.4.0)
|
27天前
|
Ubuntu 编译器 计算机视觉
Ubuntu系统编译OpenCV4.8源码
【10月更文挑战第17天】只要三步即可搞定,第一步是下载指定版本的源码包;第二步是安装OpenCV4.8编译需要的编译器与第三方库支持;第三步就是编译OpenCV源码包生成安装文件并安装。
|
1月前
|
Oracle 关系型数据库 MySQL
Mysql(1)—简介及Windows环境下载安装
MySQL 是一个流行的关系型数据库管理系统(RDBMS),基于 SQL 进行操作。它由瑞典 MySQL AB 公司开发,后被 Sun Microsystems 收购,现为 Oracle 产品。MySQL 是最广泛使用的开源数据库之一,适用于 Web 应用程序、数据仓库和企业应用。
55 2
|
1月前
|
应用服务中间件 Shell PHP
windows系统配置nginx环境运行pbootcms访问首页直接404的问题
windows系统配置nginx环境运行pbootcms访问首页直接404的问题
|
3月前
|
Java 应用服务中间件 Windows
【App Service for Windows】为 App Service 配置自定义 Tomcat 环境
【App Service for Windows】为 App Service 配置自定义 Tomcat 环境
|
3月前
|
并行计算 TensorFlow 算法框架/工具
Windows11+CUDA12.0+RTX4090如何配置安装Tensorflow2-GPU环境?
本文介绍了如何在Windows 11操作系统上,配合CUDA 12.0和RTX4090显卡,通过创建conda环境、安装特定版本的CUDA、cuDNN和TensorFlow 2.10来配置TensorFlow GPU环境,并提供了解决可能遇到的cudnn库文件找不到错误的具体步骤。
404 3
|
5月前
|
编译器 C语言 C++
Windows下配置GCC(MinGW)环境
Windows下配置GCC(MinGW)环境
1101 0
|
5月前
|
PHP Windows
windows 安装php7.4并配置phpstorm环境
windows 安装php7.4并配置phpstorm环境
550 0

热门文章

最新文章

下一篇
无影云桌面