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

window上Clion配置opencv

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

  • widnows 11
  • mingw 8.1.0
  • opencv 4.5.5

mingw8.1下载地址https://sourceforge.net/projects/mingw/

配置环境变量

cmake下载

安装完添加环境变量

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

我这里安装4.5.5的

下载完成后解压

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

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

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

Configure完成后,再点击Generate

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

编译成功

然后执行安装,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

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

打开 clion,新建一个项目

打开设置中的工具链

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

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

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

cmake 复制代码
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更改

然后就是代码

c 复制代码
#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这种解释型语言不同

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

运行结果

相关推荐
syagain_zsx8 分钟前
算法基础篇 · 04 前缀和(C++ 题解)
c++·算法·前缀和
汉克老师1 小时前
CSP-J 2026 初赛试题解析(第三部分:完善程序题(第一题))精讲
c++·csp-j·小学生·学c++编程
haluhalu.2 小时前
初识 Protobuf:微服务跨语言通信的一份契约
java·c语言·开发语言·c++·python
longxuan012 小时前
倍增算法详解
c++·st表·倍增算法
-森屿安年-2 小时前
返回最大数
c++·贪心算法
0+1112 小时前
算法 --二分查找
c++·算法·leetcode
拂拉氏2 小时前
【项目实现】 C++ vector实现(空间配置器+异常处理)
c++·vector·异常·空间配置器
qq_199886873 小时前
第8板块·第3节:设备间拷贝与点对点(P2P)传输
c++·人工智能·gpu算力·cuda
爱奥尼欧3 小时前
【C++】map、set 的底层是什么?红黑树五条性质、插入旋转到模拟实现
开发语言·数据结构·c++
汉克老师3 小时前
CSP-J 2026 初赛试题解析(第三部分:完善程序题(第二题))精讲
c++·csp-j·小学生·学c++编程