在Windows上使用OpenCV和Clion IDE

mit*_*n18 7 windows opencv clion

我实际上正在寻找一种方法来使用OpenBV与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})
Run Code Online (Sandbox Code Playgroud)

和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;
}
Run Code Online (Sandbox Code Playgroud)

并且对构建的响应是:

undefined reference to `cv::imread(cv::String const&, int)'
Run Code Online (Sandbox Code Playgroud)

所有OpenCV函数的未定义错误

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

daB*_*bby 29

我可以告诉你,我是如何在Windows上做到这一点的.

首先,你需要MinGWCMake.

  1. 下载OpenCV源文件.链接
  2. 打开包装C:\opencv(或您选择的文件夹)
  3. 打开CMake并选择源(目录为2.)并构建示例C:\opencv\mingw-build
  4. 单击Configure并选择MinGW Makefiles.(如果遇到问题,请确保将minGW/bin目录添加到标记为"PATH"的环境路径中)
  5. 等待配置完成,编辑您需要的属性(在我的情况下,我不需要测试,文档和python).
    在此输入图像描述Configure再次 点击.当一切都是白色时,单击Generate其他编辑红色字段.
  6. open cmd和dir构建目录3.
  7. 运行mingw32-make(或mingw64-make).这需要一段时间. 在此输入图像描述
  8. 完成后,运行mingw32-make install(或mingw64-make install).
    这将创建一个安装文件夹,其中包含构建您自己的OpenCV应用程序所需的所有内容.
  9. PATH添加到系统C:\opencv\mingw-build\install\x86\mingw\bin
    重新启动PC.
  10. 设置CLION:

的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})
Run Code Online (Sandbox Code Playgroud)

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;
}
Run Code Online (Sandbox Code Playgroud)

建立并运行main.cpp.

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

我希望这有帮助.

  • 在您上面说,"您需要下载FindOpenCV.cmake并将其添加到project-root/cmake /." 在我的情况下,我需要将FindOpenCV.cmake添加到CLion的CMake安装目录,在我的例子中是在`C:\ Program Files(x86)\ JetBrains\CLion 2016.2.1\bin\cmake\share\cmake-3.6\Modules`.在这个位置,我找到了许多其他`Find*.cmake`文件. (5认同)
  • 有人在执行“cingw32-make”时遇到问题吗?我完全按照指南做了所有事情,但它抛出这样的错误: ```opencv\sources\3rdparty\libjpeg-turbo\src\jmemmgr.c: In function 'realize_virt_arrays': \opencv\sources\3rdparty\libjpeg-turbo \src\jmemmgr.c:662:11: 错误:'SIZE_MAX' 未声明(在此函数中首次使用) if (SIZE_MAX - Maximum_space &lt; new_space) ^~~~~~~~ ``` 有什么想法吗?我不是真正的 C++ 开发人员。 (2认同)