美文网首页程序员C++编程软件开发
Win10使用VS2019从源码编译OpenCV 4.4 + C

Win10使用VS2019从源码编译OpenCV 4.4 + C

作者: _阿瑶 | 来源:发表于2020-08-05 12:54 被阅读0次

    本文主要介绍Win10使用VS2019从源码编译OpenCV 4.4,并使用opencv_contrib支持CUDA 11.0 + Cudnn 8.0,以及对python3的支持。

    1 首先准备安装环境

    • Microsoft Visual Studio 2019

      可以用社区版,免费的。

    • CUDA 11.0

      下载地址:https://developer.nvidia.com/cuda-downloads

      安装顺序建议先安装VS2019再安装CUDA。

    • CUDNN 8.0

      下载地址:https://developer.nvidia.com/cudnn

      下载解压后,分别将cuda/include, cuda/lib, cuda/bin三个目录中的内容拷贝到C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.0对应的include, lib, bin目录下。

      配置cudnn 8.0
    • CMake

      下载地址:https://github.com/Kitware/CMake/releases

      选择最新版windows版,如cmake-3.18.1-win64-x64.msi,下载完成后直接安装。

    • (可选) Anaconda3

      如果需要把opencv配置到虚拟环境的python3的话,可以使用Anaconda/Miniconda来解决。

    • (可选) ffmpeg

      Windows下直接使用发行版:https://ffmpeg.zeranoe.com/builds/

      选择Shared,下载后将bin文件夹所在的路径添加到环境变量Path

    2 下载源代码并修改

    打开opencv的源代码目录,找到./opencv/3rdparty/ippicv/ippicv.cmake这个文件,将第47行

    "https://raw.staticdn.net/opencv/opencv_3rdparty/${IPPICV_COMMIT}/ippicv/"
    

    中的raw.githubusercontent.com改成raw.staticdn.net

    同样的,./opencv/3rdparty/ffmpeg/ffmpeg.cmake的第25行的网址改为:

    "https://raw.staticdn.net/opencv/opencv_3rdparty/${FFMPEG_BINARIES_COMMIT}/ffmpeg/"
    

    对于opencv_contrib,同样的操作,修改以下配置代码:

    ./opencv_contrib/modules/xfeatures2d/camke/download_boostdesc.cmake
    # 第27行改为"https://raw.staticdn.net/opencv/opencv_3rdparty/${OPENCV_3RDPARTY_COMMIT}/"
    ./opencv_contrib/modules/xfeatures2d/camke/download_vgg.cmake
    # 第21行改为"https://raw.staticdn.net/opencv/opencv_3rdparty/${OPENCV_3RDPARTY_COMMIT}/"
    ./opencv_contrib/modules/face/CMakeLists.txt
    # 第19行改为"https://raw.staticdn.net/opencv/opencv_3rdparty/${__commit_hash}/"
    

    3 运行cmake

    打开cmake,设置源代码路径(刚刚下载的opencv代码所在文件夹)和build路径(需要自己新建build的文件夹),然后点击Configure,会弹窗让选择VS版本,这里选择vs2019,其他选项默认,点击Finish完成,然后等待即可。

    cmake的设置

    之后需要配置一些选项。这几个需要打勾:

    BUILD_opencv_world
    WITH_CUDA
    WITH_CUDNN
    

    如果没有的话,使用Add Entry手动添加。

    Add Entry

    OPENCV_EXTRA_MODULES_PATH这个选项中,需要添加刚刚下载的opencv_contrib的源码路径下的modules目录,注意这里必须把所有的"\"改成"/"才能正确配置。例如:

    D:/ProgramData/opencv/opencv_contrib/modules

    如果需要配置python3的话,需要注意,BUILD_opencv_python2设置成False,BUILD_opencv_python3设置成True,如果这两项没有的话,直接使用Add Entry添加。

    然后配置路径,根据自己的Anaconda以及使用的虚拟环境来设置,例如:

    PYTHON3_EXECUTABLE=D:/ProgramData/miniconda3/envs/pytorch/python.exe
    PYTHON3_INCLUDE_DIR=D:/ProgramData/miniconda3/envs/pytorch/include
    PYTHON3_LIBRARY=D:/ProgramData/miniconda3/envs/pytorch/libs/python38.lib
    PYTHON3_NUMPY_INCLUDE_DIRS=D:/ProgramData/miniconda3/envs/pytorch/Lib/site-packages/numpy/core/include
    PYTHON3_PACKAGES_PATH=D:/ProgramData/miniconda3/envs/pytorch/lib/python3.8/Lib/site-packages

    如果电脑上有ffmpeg的话,还需要给WITH_FFMPEG打勾,如果没有的话,直接使用Add Entry添加。

    接下来再次Configure,等待大约2-3分钟,直到下方出现Configuring done。

    然后点击Generate,生成项目文件,大约需要30秒,直到下方出现Generating done。

    检查输出信息中和配置相关的内容,如python的路径设置,CUDA和Cudnn相关信息,ffmpeg设置等。

    4 使用VS2019编译源码

    点击CMake中的Open Project或者打开build文件夹中的OpenCV.sln,然后根据需要把配置选成Debug x64Release x64,点击Build --> Rebuild Project,接下来根据电脑配置的不同需要等待大约3-4个小时来编译。

    Build

    编译好后,找到解决方案目录里的CMakeTargets项展开的INSTALL项,右键 --> Project Only --> Build Only INSTALL。

    Build Only INSTALL

    之后会在./opencv/build/install/x64/vc16生成编译好的库。

    到此编译完成。

    最后把bin路径添加到环境变量Path,如:

    D:\ProgramData\opencv\build\install\x64\vc16\bin

    (取决于你配置的地址)

    5 验证opencv是否可用,并运用vs2019在C/C++项目中使用

    打开vs2019,新建项目,添加一个调用opencv的源代码,如果没有的话,可以用自带sample中的cpp文件,如:

    D:\ProgramData\opencv\samples\cpp\example_cmake\example.cpp

    在VS2019中的项目属性设置,选择Release x64,在VC++目录中添加Include Directories (根据自己的编译路径改一下):

    D:\ProgramData\opencv\build\install\include

    vs2019项目设置

    然后在Linker --> Input --> Additional Dependencies 中,添加

    opencv_world440.lib

    Additional Dependencies

    接下来就可以编译运行在vs2019中的项目了。如果是自带的sample,会显示摄像头实时画面,并出现"Hello OpenCV"的文字。

    6 验证opencv的python接口是否已经配置好

    打开python (如果用anaconda,进入相应的虚拟环境,然后输入python),在命令行运行:

    import cv2
    cv2.__version__
    

    返回'4.4.0'即表示opencv已配置python接口。

    python中验证opencv是否安装好

    欢迎大家在评论区补充相关问题分享经验,如需转载请注明出处:
    https://www.jianshu.com/p/aa8455fcc672

    相关文章

      网友评论

        本文标题:Win10使用VS2019从源码编译OpenCV 4.4 + C

        本文链接:https://www.haomeiwen.com/subject/cuvnrktx.html