• 判断OpenCV是否为共享库,Windows基于CMake编译Caffe需要opencv共享库


    判断OpenCV是否为共享库,Windows基于CMake编译Caffe需要opencv共享库

    TLDR

    • 只考虑windows下opencv预编译包的情况。

    • 对于opencv2.4.x系列,cmake时指定-DOpenCV_STATIC=OFF则为使用动态共享库,不指定或者指定-DOpenCV_STATIC=ON则为使用静态库。

    • 对于opencv3系列,我用的不多。opencv310看起来是只有动态库。

    • find(OpenCV)后,打印${OpenCV_LIB_PATH}${OpenCV_SHARED}来查看OpenCV库目录、是否为共享库。

    • OpenCV 3.x 源码编译时默认设定是,android和ios平台编静态库,其它平台(通常是x86,例如日常的开发机windows/linux/mac)是静态库。也可自行修改BUILD_SHARED_LIBSOFF来生成静态库。

    静态库:使用的是staticlib目录

    OpenCV_LIB_PATH: D:/lib/opencv_249/build/x64/vc12/staticlib
    OpenCV_SHARED: OFF
    

    动态库:使用的是lib目录

    OpenCV_LIB_PATH: D:/lib/opencv_249/build/x64/vc12/lib
    OpenCV_SHARED: ON
    

    完整的找包写法:

    find_package(OpenCV QUIET COMPONENTS core highgui imgproc imgcodecs)
    if(NOT OpenCV_FOUND) # if not OpenCV 3.x, then imgcodecs are not found
        find_package(OpenCV REQUIRED COMPONENTS core highgui imgproc)
    endif()
    
    message(STATUS "OpenCV library status:")
    message(STATUS "    version: ${OpenCV_VERSION}")
    message(STATUS "    libraries: ${OpenCV_LIBS}")
    message(STATUS "    include path: ${OpenCV_INCLUDE_DIRS}")
    message(STATUS "    OpenCV_SHARED: ${OpenCV_SHARED}") # important
    

    举例:windows上基于CMake编译Caffe,设定OpenCV

    1)下载

    caffe windows分支源码。https://github.com/BVLC/caffe ,选择windows分支下载。或者git操作。

    caffe的预编译的依赖包。我放到了D:/lib/caffe_windows_deps/download/libraries_v120_x64_py27_1.1.0.tar.bz2。等下调用cmake的时候会自动解压到D:/lib/caffe_windows_deps/libraries_v120_x64_py27_1.1.0

    2)第一种编译方式:使用官方依赖包编译caffe

    caffe-windows根目录下编写compile.bat脚本并执行:

    set BUILD_DIR=build-vs2013
    if exist %BUILD_DIR% rd /s /q %BUILD_DIR%
    md %BUILD_DIR%
    cd %BUILD_DIR%
    
    set DEP_ROOT=F:/zhangzhuo/lib/caffe_windows_deps
    
    cmake -G "Visual Studio 12 2013 Win64" ^
        -DCAFFE_DEPENDENCIES_ROOT_DIR=%DEP_ROOT% ^
        -DCPU_ONLY=ON ^
        -DBLAS=Open ^
    	..
    
    cd ..
    

    3)第二种编译方式:手工指定opencv路径、是否为动态共享库,编译caffe

    opencv249windows pack同时提供动态共享库和静态库,默认静态库。编译caffe需要共享库,需要手动开启:OpenCV_STATIC=OFF

    set BUILD_DIR=build-vs2013-opencv249
    if exist %BUILD_DIR% rd /s /q %BUILD_DIR%
    md %BUILD_DIR%
    cd %BUILD_DIR%
    
    set DEP_ROOT=D:/lib/caffe_windows_deps
    set OpenCV_DIR=D:/lib/opencv_249/build
    
    cmake -G "Visual Studio 12 2013 Win64" ^
        -DCAFFE_DEPENDENCIES_ROOT_DIR=%DEP_ROOT% ^
        -DCPU_ONLY=ON ^
        -DBLAS=Open ^
        -DOpenCV_DIR=%OpenCV_DIR% ^
        -DOpenCV_STATIC=OFF ^
    	..
    
    cd ..
    

    然后开visual studio,进入Release模式编译

    opencv310windows pack只提供了动态库,所以不用指定-DOpenCV_STATIC=OFF

    set BUILD_DIR=build-vs2013-opencv310
    if exist %BUILD_DIR% rd /s /q %BUILD_DIR%
    md %BUILD_DIR%
    cd %BUILD_DIR%
    
    set DEP_ROOT=F:/zhangzhuo/lib/caffe_windows_deps
    set OpenCV_DIR=F:/zhangzhuo/lib/opencv_310/build
    
    cmake -G "Visual Studio 12 2013 Win64" ^
        -DCAFFE_DEPENDENCIES_ROOT_DIR=%DEP_ROOT% ^
        -DCPU_ONLY=ON ^
        -DBLAS=Open ^
        -DOpenCV_DIR=%OpenCV_DIR% ^
    	..
    
    cd ..
    
    
  • 相关阅读:
    定时备份脚本
    NFS+inotify实时同步
    pxe+kickstart自动化安装
    LVS负载均衡DR模式
    Rsync文件同步服务
    NFS文件共享服务
    MySQL-5.5.49安装、多实例、主从复制
    PHP-5.3.27源码安装及nginx-fastcgi配置
    一文解读5G (转)
    一文解读VR/AR/MR (转)
  • 原文地址:https://www.cnblogs.com/zjutzz/p/10616141.html
Copyright © 2020-2023  润新知