使用VS2017 自带cmake编译 opencv3.4+contrib

一、前言

VS2017更新之后添加了cmake支持,虽然使用并没有cmake-gui可以避免很多cmake-gui的问题。笔者就是因为cmake-gui编译opencv失败才采用的vs2017编译。

二、准备

  1. 为vs2017安装cmake

    • 打开vs,点击”工具 -> 获取工具和功能”
    • 在单个组件中勾选“==用于cmake的visual c工具==”和“==Visual c++ tools for cmake and linux==”
      使用VS2017 自带cmake编译 opencv3.4+contrib_第1张图片
      使用VS2017 自带cmake编译 opencv3.4+contrib_第2张图片
    • 点击修改,等待安装完成
  2. 下载opencv和opencv_contrib源码并解压,下载地址:https://github.com/opencv

三、编译

  1. 打开vs,选择“文件->打开->CMake”,选择你解压的opencv目录,该目录下一定要有“CMakeLists.txt”
  2. 打开之后vs会生成“CMakeSettings.json”配置文件,打开该文件并配置opencv_contrib目录,下面是我的部分配置
{
      "name": "x86-Debug",
      "generator": "Visual Studio 15 2017",
      "configurationType": "Debug",
      "inheritEnvironments": [ "msvc_x86" ],
      "buildRoot": "${projectDir}\\cmake_build\\${name}", //生成的工程文件目录
      "installRoot": "${projectDir}\\cmake_install\\${name}", //生成的安装文件目录
      "cmakeCommandArgs": "",
      "buildCommandArgs": "-v",
      "ctestCommandArgs": "",
      "variables": [ //添加或改变配置参数
        {
          "name": "BUILD_opencv_world", //编译成一个合集文件
          "value": "ON"
        },
        {
          "name": "OPENCV_EXTRA_MODULES_PATH", //配置opencv_contrib目录
          "value": "E:\\opencv\\sources\\opencv_contrib-3.4.0\\modules"
        },
        { 
         // 不使用CUDA
         // 由于我安装了CUDA,但是使用CUDA却编译不过去,暂时还没有解决,就先不使用CUDA了
          "name": "WITH_CUDA", 
          "value": "off"
        }
      ]
    },
     {
      "name": "x64-Debug",
      "generator": "Visual Studio 15 2017 Win64",//64位
      "configurationType": "Debug",
      "inheritEnvironments": [ "msvc_x64" ],
      "buildRoot": "${projectDir}\\cmake_build\\${name}",
      "installRoot": "${projectDir}\\cmake_install\\${name}",
      "cmakeCommandArgs": "",
      "buildCommandArgs": "-v",
      "ctestCommandArgs": "",
      "variables": [
        {
          "name": "BUILD_opencv_world", //编译成一个合集文件
          "value": "ON"
        },
        {
          "name": "OPENCV_EXTRA_MODULES_PATH",
          "value": "E:\\opencv\\sources\\opencv_contrib-3.4.0\\modules"
        },
        {
          "name": "WITH_CUDA",
          "value": "off"
        }
      ]
    }
  • 保存“CMakeSettings.json”文件,vs会自动生成工程
  • 由于要下载很多ffmpeg和ippicv等依赖库,而且速度很慢。解决办法:

    • 查看正在下载的文件,如:ippicv_2017u3_win_intel64_general_20170822.zip
      使用VS2017 自带cmake编译 opencv3.4+contrib_第3张图片

    • 到opencv_3rdparty找到相应的分支,下载整个工程。
      使用VS2017 自带cmake编译 opencv3.4+contrib_第4张图片
      使用VS2017 自带cmake编译 opencv3.4+contrib_第5张图片

    • 下载完成之后解压,找到文件“ippicv_2017u3_win_intel64_general_20170822.zip”,将其复制到“opencv源工程文件夹/.cache/ippicv/”下,替换掉“0421e642bc7ad741a2236d3ec4190bdd-ippicv_2017u3_win_intel64_general_20170822.zip”
  • 但是似乎找不到“face_landmark_model.dat”,给出下载地址“https://raw.githubusercontent.com/opencv/opencv_3rdparty/8afa57abc8229d611c4937165d20e2a2d9fc5a12/face_landmark_model.dat”

  • 如果你觉得麻烦,可以直接到这里下载整个资源包

  • 生成完成之后,打开“opencv源工程文件夹/cmake_build/x86-Debug/OpenCV.sln”(这个目录是上面配置文件设置的)

  • 选择“INSTALL”,右键生成即可,生成的文件在“opencv源工程文件夹/cmake_install/”目录下
    使用VS2017 自带cmake编译 opencv3.4+contrib_第6张图片

你可能感兴趣的:(opencv)