您的位置:首页 > 运维架构

关于CMAKE中查找自定义路径OpenCV的问题

2018-01-17 21:55 260 查看

关于CMAKE中查找自定义路径OpenCV的问题

前段时间在机器上(ubuntu16.04)安装了ROS_kinetic,因此机器上散布着opencv2.4.9、opencv3.0.0以及ros引入的opencv3.2.0。删掉机器上的opencv2.4.9之后,发现使用cmake编译opencv程序时,总是找到3.2.0的opencv,而不能找到3.0.0(opencv3.0.0make时的CMAKE_INSTALL_PREFIX
/usr/local/opencv300
)。

尝试修改在
/etc/ld.so.conf
文件中添加
/usr/local/opencv300/lib


与修改
~/.bashrc
如下

export LIBRARY_PATH=$LIBRARY_PATH:/usr/local/opencv300/lib
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/opencv300/lib


均无法成功找到opencv3.0.0

最终,修改
CMakeList.txt
中相关语句如下,才得以成功

SET(OpenCV_DIR /usr/local/opencv300/share/OpenCV)
find_package(OpenCV 3 REQUIRED)


按照此路径,cmake可以找到一个opencv的设置文件
OpenCVConfig.cmake


文件头部有注释如下:

# ===================================================================================
#  The OpenCV CMake configuration file
#
#             ** File generated automatically, do not modify **
#
#  Usage from an external project:
#    In your CMakeLists.txt, add these lines:
#
#    find_package(OpenCV REQUIRED)
#    include_directories(${OpenCV_INCLUDE_DIRS})
#    target_link_libraries(MY_TARGET_NAME ${OpenCV_LIBS})
#
#    Or you can search for specific OpenCV modules:
#
#    find_package(OpenCV REQUIRED core videoio)
#
#    If the module is found then OPENCV_<MODULE>_FOUND is set to TRUE.
#
#    This file will define the following variables:
#      - OpenCV_LIBS                     : The list of all imported targets for OpenCV modules.
#      - OpenCV_INCLUDE_DIRS             : The OpenCV include directories.
#      - OpenCV_COMPUTE_CAPABILITIES     : The version of compute capability.
#      - OpenCV_ANDROID_NATIVE_API_LEVEL : Minimum required level of Android API.
#      - OpenCV_VERSION                  : The version of this OpenCV build: "3.0.0"
#      - OpenCV_VERSION_MAJOR            : Major version part of OpenCV_VERSION: "3"
#      - OpenCV_VERSION_MINOR            : Minor version part of OpenCV_VERSION: "0"
#      - OpenCV_VERSION_PATCH            : Patch version part of OpenCV_VERSION: "0"
#      - OpenCV_VERSION_STATUS           : Development status of this build: ""
#
#    Advanced variables:
#      - OpenCV_SHARED                   : Use OpenCV as shared library
#      - OpenCV_CONFIG_PATH              : Path to this OpenCVConfig.cmake
#      - OpenCV_INSTALL_PATH             : OpenCV location (not set on Windows)
#      - OpenCV_LIB_COMPONENTS           : Present OpenCV modules list
#      - OpenCV_USE_MANGLED_PATHS        : Mangled OpenCV path flag
#      - OpenCV_MODULES_SUFFIX           : The suffix for OpenCVModules-XXX.cmake file
#
#    Deprecated variables:
#      - OpenCV_VERSION_TWEAK            : Always "0"
#
# ===================================================================================


仿照注释中样例写法,可以找到opencv头文件和库文件,使用参考文献中的方法输出opencv版本等变量,得到:

-- OpenCV library status:
--     version: 3.0.0
--     libraries: opencv_xphoto;opencv_xobjdetect;opencv_ximgproc;opencv_xfeatures2d;opencv_tracking;opencv_text;opencv_surface_matching;opencv_saliency;opencv_rgbd;opencv_reg;opencv_optflow;opencv_line_descriptor;opencv_latentsvm;opencv_face;opencv_datasets;opencv_ccalib;opencv_bioinspired;opencv_bgsegm;opencv_adas;opencv_viz;opencv_videostab;opencv_videoio;opencv_video;opencv_superres;opencv_stitching;opencv_shape;opencv_photo;opencv_objdetect;opencv_ml;opencv_imgproc;opencv_imgcodecs;opencv_highgui;opencv_hal;opencv_flann;opencv_features2d;opencv_core;opencv_calib3d
--     include path: /usr/local/opencv300/include/opencv;/usr/local/opencv300/include


参考文献戳这里
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  opencv cmake 多版本