zoukankan      html  css  js  c++  java
  • opencv编译

    1.

    clone源码

    https://github.com/opencv/opencv

    2.

    安装cmake

    3.

    cmake配置的时候,输出目录需要另外设置一个目录,不可以放到源码目录

    4.

    用cmake config的时候有两个需要在线下载,但是cmake下载不下来

    5.

    在cmake输出目录打开CMakeDownloadLog.txt文件,这里面显示了下载什么文件,自己把url拷贝出来,在浏览器里面下载出来

    6.

    在CMakeDownloadLog.txt目录中还记录了把文件下载到哪里,自己下载完成后,拷贝到目录

    比如我x64的有一个需要下载的文件ippicv_2019_win_intel64_20180723_general.zip

    CMakeDownloadLog.txt文件中显示了要从https://raw.githubusercontent.com/opencv/opencv_3rdparty/32e315a5b106a7b89dbed51c28f8120a48b368b4/ippicv/ippicv_2019_win_intel64_20180723_general.zip下载到3rdpartyippicv目录中

    7.

    下载完成后在源码目录找到下载这个文件的cmake,比如(opencv3rdpartyippicvippicv.cmake)

     ocv_download(FILENAME ${OPENCV_ICV_NAME}
                  HASH ${OPENCV_ICV_HASH}
                  URL
                    "${OPENCV_IPPICV_URL}"
                    "$ENV{OPENCV_IPPICV_URL}"
                    "https://raw.githubusercontent.com/opencv/opencv_3rdparty/${IPPICV_COMMIT}/ippicv/"
                  DESTINATION_DIR "${THE_ROOT}"
                  ID IPPICV
                  STATUS res
                  UNPACK RELATIVE_URL)
     if(res)
       set(${root_var} "${THE_ROOT}/${OPENCV_ICV_PACKAGE_SUBDIR}" PARENT_SCOPE)
     endif()
    改成

    set(${root_var} "${THE_ROOT}/${OPENCV_ICV_PACKAGE_SUBDIR}" PARENT_SCOPE)

    上面就是下载,成功后设置res为true,然后再设置环境为下载的文件,我们既然自己手动下载并且放置好了,就可以把这个删掉了,直接设置环境

    8.

    这个时候cmake是卡死的,点击stop,然后config和generate都是灰掉的,直接关掉

    9.

    再打开cmake,再config,还会有需要下载的文件,同样下载下来放到对应目录下,并且配置cmake

    这次是ffmpeg的两个文件

    opencv_videoio_ffmpeg.dll

    opencv_videoio_ffmpeg_64.dll

    这个对应的cmkae是ffmpeg.cmake,把下面的直接删掉就好了

      foreach(id ${ids})
        ocv_download(FILENAME ${name_${id}}
                   HASH ${FFMPEG_FILE_HASH_${id}}
                   URL
                     "$ENV{OPENCV_FFMPEG_URL}"
                     "${OPENCV_FFMPEG_URL}"
                     "https://raw.githubusercontent.com/opencv/opencv_3rdparty/${FFMPEG_BINARIES_COMMIT}/ffmpeg/"
                   DESTINATION_DIR ${FFMPEG_DOWNLOAD_DIR}
                   ID FFMPEG
                   RELATIVE_URL
                   STATUS res)
        if(NOT res)
          set(status FALSE)
        endif()
      endforeach()

    这个就是遍历下载两个文件,都下载好了才设置为true,然后后面配置环境,我们已经下载好了,不用这一步了

    10.

    这时最好重启电脑

    11.

    电脑起来后选择config,第一次结束显示是红的,然后再点击config,这是没有红色的选项显示了

    12.

    选中BUILD_opencv_world,这个的目的是把所有的lib放到一个lib中,使用更方便

    13.

    点击generate生成sln工程

    14.

    编译工程是如果碰到了fail,提示无法找到opencv_world411.lib,那就是因为没有编译成功

    15.

    找到工程中modules->opencv_world单独编译看看报错

    16.

    如果报错是 fatal error LNK1127: library is corrupt ippicvmt.lib那就是我们刚才设置的时候出现了问题

    这是表示这个lib库损坏了,我们可以在ippicv目录下把ippicv_win删掉,然后解压我们自己下载的压缩包,再重新编译

    17.

    如果正常的话会全部编译通过

    18.

    剩下的就是导入到自己的工程使用即可

  • 相关阅读:
    Oracle:DBMS_STATS.GATHER_TABLE_STATS的语法
    Oracle Purge和drop的区别
    Oracle Pipelined Table Functions简介
    Firefox与IE浏览器缓存的两个重要区别
    @SuppressWarnings的使用、作用、用法
    正确优雅地解决用户退出——JSP及Struts解决方案
    log4j详解与实战
    maven项目在eclipse中debug时看不到源码?
    maven tomcat eclipse 配置 debug
    Java泛型详解
  • 原文地址:https://www.cnblogs.com/studywithallofyou/p/11251120.html
Copyright © 2011-2022 走看看