一、Opencv3.4.1及扩展模块在VS2019里的安装

一、版本说明

  (我发誓这是我最后一次写Opencv的安装~_~)

  Opencv的稳定版本和扩展版本是分开的,一般我们使用稳定版本就可以了,但是如果设计到人脸识别这些东西,那么就需要用到扩展版本。

  各软件版本:

  Opencv3.4.1

  Opencv contrib 3.4.1

  Cmake  3.16.0

  VS 2019

二、基础准备

  首先必须安装VS,Cmake,这些不多说了。

  然后下载Opencv3.4.1:官网链接:https://opencv.org/opencv-3-4-1.html

  Opencv 3.4.1的扩展模块:https://github.com/opencv/opencv_contrib

   注意这里contrib下载的版本在这里选择:

  

 三、编译过程

  1-这里我的文件夹如图:

  

   build是空文件夹,contrib下载的安装包解压在了sources文件夹下面(它也可以放在Sources并列位置)

  2-打开Cmake

  路径如下:

  

   3-点击Configure

  这个时候开始配置,但是会出现错误:

  错误一:OpenCV does not recognize MSVC_VERSION 1922

    我们打开提示对应的Cmake文件,找到对应的位置。

if(MSVC_VERSION EQUAL 1400)
    set(OpenCV_RUNTIME vc8)
  elseif(MSVC_VERSION EQUAL 1500)
    set(OpenCV_RUNTIME vc9)
  elseif(MSVC_VERSION EQUAL 1600)
    set(OpenCV_RUNTIME vc10)
  elseif(MSVC_VERSION EQUAL 1700)
    set(OpenCV_RUNTIME vc11)
  elseif(MSVC_VERSION EQUAL 1800)
    set(OpenCV_RUNTIME vc12)
  elseif(MSVC_VERSION EQUAL 1900)
    set(OpenCV_RUNTIME vc14)
  elseif(MSVC_VERSION MATCHES "^191[0-9]$")
    set(OpenCV_RUNTIME vc15)

  可以看到,由于使用的vs2019,对应版本是1922,所以这里无法识别,

  这个时候我们修改如下(大家根据自己的VS对应的版本去添加,一般来说VS2019-vc16, vs2017-vc15):

if(MSVC_VERSION EQUAL 1400)
    set(OpenCV_RUNTIME vc8)
  elseif(MSVC_VERSION EQUAL 1500)
    set(OpenCV_RUNTIME vc9)
  elseif(MSVC_VERSION EQUAL 1600)
    set(OpenCV_RUNTIME vc10)
  elseif(MSVC_VERSION EQUAL 1700)
    set(OpenCV_RUNTIME vc11)
  elseif(MSVC_VERSION EQUAL 1800)
    set(OpenCV_RUNTIME vc12)
  elseif(MSVC_VERSION EQUAL 1900)
    set(OpenCV_RUNTIME vc14)
   #添加这两行,1922是错误提示的vs版本,vc16是对应的工具
  elseif(MSVC_VERSION EQUAL 1910)
    set(OpenCV_RUNTIME vc15)
  elseif(MSVC_VERSION EQUAL 1922)
    set(OpenCV_RUNTIME vc16)
  elseif(MSVC_VERSION MATCHES "^191[0-9]$")
    set(OpenCV_RUNTIME vc15)

  错误二:WARNING "Face: Can't get model file for face alignment."

  这个时候我们找到对应的cmakelists部分:

set(__commit_hash "8afa57abc8229d611c4937165d20e2a2d9fc5a12")
set(__file_hash "7505c44ca4eb54b4ab1e4777cb96ac05")
ocv_download(
    FILENAME face_landmark_model.dat
    HASH ${__file_hash}
    URL
      "${OPENCV_FACE_ALIGNMENT_URL}"
      "$ENV{OPENCV_FACE_ALIGNMENT_URL}"
      "https://raw.githubusercontent.com/opencv/opencv_3rdparty/${__commit_hash}/"
    DESTINATION_DIR "${CMAKE_BINARY_DIR}/${OPENCV_TEST_DATA_INSTALL_PATH}/cv/face/"
    ID "data"
    RELATIVE_URL
    STATUS res
)
if(NOT res)
  message(WARNING "Face: Can't get model file for face alignment.")
endif()

  发现是其中的数据无法下载:face_landmark_model.dat

  但是上面提供了链接:https://github.com/opencv/opencv_3rdparty/tree/contrib_face_alignment_20170818

  我们下载下来,复制到下面这个文件夹(注意不同版本不一样,Opencv3.4.1是这样的)

  

   我们可以看到里面已经有了一个文件,但是没有下载成功,我们把这个文件删除,并将复制过来的文件命名为截图里面的文件名。

  4-设置

  勾选Build_opencv_world:(这个选项将所有的lib文件集合为一个.lib文件)

  

   设置contrib文件路径:

  

   设置安装路径(这个文件夹是最后使用的)

  

   5-重新点击Configure,多点击几次,直到完全变白

   6-点击Generate

   7-点击OpenProject

三、VS编译

  1-编译

  解决方案选择Release x64

  解决方案里面选择ALL_BUILD,然后右键,选择生成,开始编译,大概半个小时到一个小时

     

        2-安装

  单击INSTALL, 右键,选择“设为启动项目”

  然后生成。所有文件被安装到install文件里面

四、配置环境变量与属性

  1-配置电脑系统变量

   在Path里面添加路径:

   

   也就是install文件夹里面的bin文件夹

  2-VS属性表配置

  兴建一个工程,在里面兴建一个属性表Opencv

  2.1  VC++目录

  

   在包含目录里面添加:

  

   库目录里面添加(都是Install文件夹里面的):

  

   2.2 C/C++->常规->附加包含目录:

  

   2.3 链接器->输入->附加依赖项

opencv_world341.lib
opencv_img_hash341.lib

  注意上面我只是编译安装了Release x64版本的,所以只有opencv_world341.lib,而没有出现opencv_world341d.lib,如果需要可以自己再次配置安装。

  至此安装完成

五参考链接

  1-Ubuntu - OpenCV 源码安装与测试

  有一部分忘记了。

六、问题补充

  我最开始的时候只是安装了Opencv没有安装扩展部分,当再次编译安装的时候,出来问题:

    无法定位程序输入点于动态链接库

  这个时候是因为原来的 opencv_world341.dll程序没有被覆盖,所以我们需要找到新生成的opencv_world341(install/bin文件夹里面),复制到:

  C:\Windows\System32

  重新覆盖即可

  另外,各种输入的时候,路径不要有错误

猜你喜欢

转载自www.cnblogs.com/fantianliang/p/12709753.html
今日推荐