window上Clion配置C++版本的opencv

本文详细指导了如何在Windows11上使用Clion开发环境配置OpenCV4.5.5,涉及MingW安装、CMake配置、编译及环境变量设置,包括Release模式的启用和图像处理示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

window上Clion配置opencv

注意版本一定要对的上,否则可能会出错,亲测

  • widnows 11
  • mingw 8.1.0
  • opencv 4.5.5

mingw8.1下载地址https://sourceforge.net/projects/mingw/
配置环境变量

1699705757867

cmake下载

image-20231119153236220

安装完添加环境变量

image-20231119153557366

来到官网,下载 windows 对应的版本,现在最新的版本是 4.5.

我这里安装4.5.5的

image-20231119153658514

下载完成后解压

image-20231119154333614

image-20231119154342639

opencv 默认只提供了 msvc 编译的版本,在 build 目录下,源码文件在 sources。因此接下来,我们需要使用 mingw 来编译 opencv,首先在 opencv 的解压目录下新建一个文件夹 mingw_build,用来存放编译生成的文件

image-20231119154428067

然后打开 cmake-gui.exe,在 Where is the source code: 选择 opencv 下的 sources文件夹,而 Where to build the binaries: 选择前面创建好的 mingw_build 文件夹

image-20231119154529935

然后点击 Configure,在 Specify the generator for this project 中选择 MinGW Makefiles

image-20231119154635591

image-20231119155510854

Configure完成后,再点击Generate

image-20231119155540819

Generate 完成后,我们进入到 mingw_build 文件夹,打开终端工具,执行命令 mingw32-make.exe 开始编译

image-20231119155710135

编译成功

image-20231119214938949

然后执行安装,mingw32-make.exe install

可能会报错

CMake Error at modules/python3/cmake_install.cmake:49 (file): file cannot create directory: E:/exe/anaconda3/Lib/site-packages/cv2. Maybe need administrative privileges. Call Stack (most recent call first): cmake_install.cmake:158 (include) mingw32-make: *** [Makefile:129: install] Error 1

这是没有权限,这个时候你需要在以管理员身份打开cmd,然后cd到mingw_build文件夹下再执行mingw32-make.exe install

image-20231119215954210

可以看到,相关的文件都被拷贝到了 mingw_build\install 目录下,然后将目录E:\opencv\opencv\mingw_build\install\x64\mingw\bin加入到系统环境变量中,这个就不用我多说了,系统环境变量怎么设置看我这篇文章https://blog.youkuaiyun.com/Johnor/article/details/134353311?spm=1001.2014.3001.5502

image-20231119220345897

打开 clion,新建一个项目

打开设置中的工具链

image-20231119220657087

默认情况下,clion 中只能使用 Debug 模式下运行程序,因此,我们来增加 Release 模式。

image-20231119220806175

接下来,修改下 CMakeLists.txt,内容如下

注意设置opencv的目录,这样项目的寻找头文件的根目录就是E:\\opencv\\opencv\\mingw_build\\install

cmake_minimum_required(VERSION 3.21)
project(OpenCVDemo)

set(CMAKE_CXX_STANDARD 11)

set(OpenCV_DIR "E:\\opencv\\opencv\\mingw_build\\install")
find_package(OpenCV REQUIRED)
include_directories(${OpenCV_INCLUDE_DIRS})
add_executable(OpenCVDemo main.cpp)
target_link_libraries(OpenCVDemo ${OpenCV_LIBS})

记得修改完一定要点击,右边的加载CMake更改

记得修改完一定要点击,右边的加载CMake更改

记得修改完一定要点击,右边的加载CMake更改

7fbc51b54538188c928f9ff959df77d

然后就是代码

#include <iostream>
#include <opencv2/opencv.hpp>

using namespace std;
using namespace cv;

int main() {
    //std::cout << "当前工作目录: " << std::filesystem::current_path() << std::endl;
    Mat srcImage = imread("..//images//img.png");
    if (!srcImage.data) {
        std::cout << "Image not loaded";
        return -1;
    }
    imshow("image", srcImage);
    waitKey(0);
    return 0;
}

注意图像的相对位置,opencv项目的位置是与相关的exe文件同目录的,这个OpenCVDemo.exe才是项目的根目录,至于为什么和python版本的opencv不一样,是因为C++是编译型语言,与python这种解释型语言不同

5d0ff19f6d64c73f0828f903ab7bee9

所以需要使用…退出cmake_build_debug目录,才能找到images下面的img.png

86bada7e67018a0f424a260be0c0afe
运行结果

image-20231119224727407

### 如何在 CLion配置和使用 OpenCV 进行 C++ 开发 #### 安装 OpenCV 库 为了能够在 CLion 中顺利使用 OpenCV,首要条件是确保已经正确安装了 OpenCV 库。对于 macOS 用户来说,可以借助 Homebrew 来简化这一过程;而对于 Windows 用户,则可能需要手动下载并解压预构建的二进制包到指定路径。 #### 修改 `CMakeLists.txt` 文件 创建一个新的 CLion 项目之后,编辑该项目下的 `CMakeLists.txt` 文件来引入必要的 OpenCV 组件。具体操作如下: - 设置环境变量指向本地存储的 OpenCV 构建目录; - 更新模块搜索路径以便找到 OpenCV 提供的相关脚本; - 调用 `find_package()` 函数加载所需的组件列表; - 将发现的头文件夹加入编译选项中; - 明确指出链接哪些特定于应用程序需求的核心库和其他辅助库[^2]。 ```cmake set(OpenCV_DIR "C:\\openCV\\opencv\\mingw-build") # 替换为实际存放位置 set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/") find_package(OpenCV REQUIRED) include_directories(${OpenCV_INCLUDE_DIRS}) target_link_libraries(testOpenCV ${OpenCV_LIBS}) # 更改 'testOpenCV' 至对应目标名称 ``` #### 编写测试程序验证配置有效性 完成以上步骤后,可以通过简单的图像读取显示例子来检验整个流程是否正常工作。这里给出一段基础代码片段用于展示基本功能[^3]。 ```cpp #include <opencv2/opencv.hpp> using namespace cv; int main() { std::string image_path = "path/to/image"; Mat img = imread(image_path, IMREAD_COLOR); if (img.empty()) { printf("Could not open or find the image\n"); return -1; } namedWindow("Display window", WINDOW_AUTOSIZE); imshow("Display window", img); int k = waitKey(0); // 等待按键事件关闭窗口 destroyAllWindows(); return 0; } ``` 需要注意的是,在 Windows 平台上执行此类应用时,应当留意资源文件相对于可执行文件的位置关系,因为这直接影响到了程序能否正确访问外部数据源[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

计算机小混子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值