Running multiple versions of OpenCV on the same computer

前端 未结 3 555
孤独总比滥情好
孤独总比滥情好 2021-02-04 02:01

My computer is running Ubuntu-16.04-LTS and OpenCV-2.4.13 is already installed on it. However, I would like to use the functionalities of newer versions of OpenCV, such as OpenC

3条回答
  •  执念已碎
    2021-02-04 02:26

    I have a working CMakelists.txt for almost the same configuration as you describe except that I am running a dauntingly old Ubuntu 12.04 (its not my own computer).

    I believe your problem comes from this line:

    find_package(OpenCV REQUIRED)
    

    Which gives you access to your distribution's OpenCV 2.4. Then you are linking against the manually installed 3.2.x version. So problems arise as soon as the interface of a function you use has changed between the two version. Your first piece of code run by chance I think.

    Here is my CMakeList.txt:

    cmake_minimum_required(VERSION 2.8)
    project(demo)
    
    find_package(OpenCV 3.2 REQUIRED PATHS "/path/to/OCV3.2/install/dir/")
    
    include_directories(${OpenCV_INCLUDE_DIRS})
    add_executable(main main.cpp)
    target_link_libraries(main ${OpenCV_LIBS})
    

    If you do not want to commit to your repository the hardcoded path to your install of OpenCV 3.2 you can refine this CMakeList.txt by changing the find_package line to:

    if(DEFINED ENV{OPENCV_INSTALL_DIR})
        find_package(OpenCV 3.2 REQUIRED PATHS $ENV{OPENCV_INSTALL_DIR})
    else()
        message("OPENCV_INSTALL_DIR not set, searching in default location(s)")
        find_package(OpenCV 3.2 REQUIRED)
    endif(DEFINED ENV{OPENCV_INSTALL_DIR})
    

    Then you just have to define the variable OPENCV_INSTALL_DIR before running cmake. I do that by exporting it from my .bashrc

提交回复
热议问题