在Windows上使用OpenCV和Clion IDE

时间:2016-03-14 10:12:43

标签: windows opencv clion

我实际上正在寻找一种方法来使用OpenCV与JetBrains的Clion创建应用程序。

我已经使用Choco安装了OpenCV,所以我拥有C:\ opencv中的所有内容

这是我与Clion的项目

的CMakeLists.txt:

cmake_minimum_required(VERSION 3.3)
project(test)

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
include_directories("C:\\opencv\\build\\include\\")

FIND_PACKAGE( OpenCV REQUIRED core highgui imgproc)
set(OpenCV_FOUND TRUE)

set(SOURCE_FILES main.cpp)
add_executable(prog ${SOURCE_FILES})

和main.cpp:

#include <opencv2/opencv.hpp>

int main() {

    cv::Mat img = cv::imread("./test.jpg", -1);
    cv::imshow("Mon image", img);
    cv::waitKey(0);
    return 0;
}

并且对构建的响应是:

undefined reference to `cv::imread(cv::String const&, int)'

和所有OpenCV函数的未定义错误

你知道它为什么不起作用吗?

2 个答案:

答案 0 :(得分:29)

我可以告诉你,我是如何在Windows上做到的。

首先,您需要MinGWCMake

  1. 下载OpenCV源文件。 Link
  2. 打开包装到C:\opencv(或您选择的文件夹)
  3. 打开CMake并选择来源( 2。目录)并构建示例C:\opencv\mingw-build
  4. 点击Configure,然后选择MinGW Makefiles。 (如果遇到问题,请确保将minGW / bin目录添加到标记为“PATH”的环境路径中)
  5. 等待配置完成,编辑您需要的属性(在我的情况下,我不需要测试,文档和python)。
    enter image description here 再次点击Configure。如果一切都是白色,请点击Generate,否则请修改红色字段。
  6. 打开cmd和dir以构建 3。
  7. 目录
  8. 运行mingw32-make(或mingw64-make)。 这需要一段时间。 enter image description here
  9. 完成后,运行mingw32-make install(或mingw64-make install) 这将创建一个安装文件夹,其中包含构建您自己的OpenCV应用程序所需的一切。
  10. 要系统PATH添加C:\opencv\mingw-build\install\x86\mingw\bin
    重新启动电脑。
  11. 设置CLion:
  12. 的CMakeLists.txt:

    project(test)
    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
    
    # Where to find CMake modules and OpenCV
    set(OpenCV_DIR "C:\\opencv\\mingw-build\\install")
    set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/")
    
    find_package(OpenCV REQUIRED)
    include_directories(${OpenCV_INCLUDE_DIRS})
    
    add_executable(test_cv main.cpp)
    
    # add libs you need
    set(OpenCV_LIBS opencv_core opencv_imgproc opencv_highgui opencv_imgcodecs) 
    
    # linking
    target_link_libraries(test_cv ${OpenCV_LIBS})
    

    main.cpp中:

    #include <opencv2/core/core.hpp>
    #include <opencv2/highgui/highgui.hpp>
    #include <iostream>
    
    int main(int argc, char** argv)
    {
        if(argc != 2)
        {
            std::cout << "Usage: display_image ImageToLoadAndDisplay" << std::endl;
            return -1;
        }
    
        cv::Mat frame;
        frame = cv::imread(argv[1], IMREAD_COLOR); // Read the file
    
        if(!frame) // Check for invalid input
        {
            std::cout << "Could not open or find the frame" << std::endl;
            return -1;
        }
    
        cv::namedWindow("Window", WINDOW_AUTOSIZE); // Create a window for display.
        cv::imshow("Window", frame); // Show our image inside it.
    
        cv::waitKey(0); // Wait for a keystroke in the window
        return 0;
    }
    

    构建并运行main.cpp

    所有路径取决于您在 2。 3中设置的设置。如果您愿意,可以更改它们。

    我希望这会有所帮助。

答案 1 :(得分:0)

我只想在 daB0bby 的答案中再添加一件事。很少有Min-GW编译器不支持C ++版本11或更高版本。 OpenCV中的线程需要此版本。因此,我建议使用TDM-GCC Compiler代替MinGW Compiler。安装此编译器,并将路径 C:\ TDM-GCC-64 \ bin 设置为系统的环境变量。