Cannot get OpenCV to compile because of undefined references?

后端 未结 6 1350
再見小時候
再見小時候 2020-12-02 14:52

The code is simple and is essentially straight from this tutorial. I am running Arch Linux and have the OpenCV library stored at /usr/include/. I have also chec

6条回答
  •  时光说笑
    2020-12-02 15:12

    follow this tutorial. i ran the install-opencv.sh file in bash. its in the tutorial

    read the example from openCV

    CMakeLists.txt

    cmake_minimum_required(VERSION 3.7)
    project(openCVTest)
    # cmake needs this line
    cmake_minimum_required(VERSION 2.8)
    
    # Define project name
    project(opencv_example_project)
    
    # Find OpenCV, you may need to set OpenCV_DIR variable
    # to the absolute path to the directory containing OpenCVConfig.cmake file
    # via the command line or GUI
    find_package(OpenCV REQUIRED)
    
    # If the package has been found, several variables will
    # be set, you can find the full list with descriptions
    # in the OpenCVConfig.cmake file.
    # Print some message showing some of them
    message(STATUS "OpenCV library status:")
    message(STATUS "    version: ${OpenCV_VERSION}")
    message(STATUS "    libraries: ${OpenCV_LIBS}")
    message(STATUS "    include path: ${OpenCV_INCLUDE_DIRS}")
    
    if(CMAKE_VERSION VERSION_LESS "2.8.11")
        # Add OpenCV headers location to your include paths
        include_directories(${OpenCV_INCLUDE_DIRS})
    endif()
    
    # Declare the executable target built from your sources
    add_executable(main main.cpp)
    
    # Link your application with OpenCV libraries
    target_link_libraries(main ${OpenCV_LIBS})
    

    main.cpp

    /**
     * @file LinearBlend.cpp
     * @brief Simple linear blender ( dst = alpha*src1 + beta*src2 )
     * @author OpenCV team
     */
    
    #include "opencv2/imgcodecs.hpp"
    #include "opencv2/highgui.hpp"
    #include 
    
    using namespace cv;
    
    /** Global Variables */
    const int alpha_slider_max = 100;
    int alpha_slider;
    double alpha;
    double beta;
    
    /** Matrices to store images */
    Mat src1;
    Mat src2;
    Mat dst;
    
    //![on_trackbar]
    /**
     * @function on_trackbar
     * @brief Callback for trackbar
     */
    static void on_trackbar( int, void* )
    {
        alpha = (double) alpha_slider/alpha_slider_max ;
    
        beta = ( 1.0 - alpha );
    
        addWeighted( src1, alpha, src2, beta, 0.0, dst);
    
        imshow( "Linear Blend", dst );
    }
    //![on_trackbar]
    
    /**
     * @function main
     * @brief Main function
     */
    int main( void )
    {
        //![load]
        /// Read images ( both have to be of the same size and type )
        src1 = imread("../data/LinuxLogo.jpg");
        src2 = imread("../data/WindowsLogo.jpg");
        //![load]
    
        if( src1.empty() ) { printf("Error loading src1 \n"); return -1; }
        if( src2.empty() ) { printf("Error loading src2 \n"); return -1; }
    
        /// Initialize values
        alpha_slider = 0;
    
        //![window]
        namedWindow("Linear Blend", WINDOW_AUTOSIZE); // Create Window
        //![window]
    
        //![create_trackbar]
        char TrackbarName[50];
        sprintf( TrackbarName, "Alpha x %d", alpha_slider_max );
        createTrackbar( TrackbarName, "Linear Blend", &alpha_slider, alpha_slider_max, on_trackbar );
        //![create_trackbar]
    
        /// Show some stuff
        on_trackbar( alpha_slider, 0 );
    
        /// Wait until user press some key
        waitKey(0);
        return 0;
    }
    

    Tested in linux mint 17

提交回复
热议问题