在计算机视觉和图像处理领域
,OpenCV 是一个不可或缺的工具
。其为开发者提供了一系列广泛的算法
和实用工具
,支持多种编程语言,并且可以在多个平台上运行。对于希望在其项目中集成先进视觉功能的开发者来说,掌握如何配置和使用OpenCV是非常重要的。
本文旨在帮助Windows平台
上的C++开发者
快速上手,在CLion集成开发环境
中配置并使用OpenCV库
。通过遵循本文档中的步骤,读者将学习到如何编译、配置适用于MinGW
的OpenCV版本,并最终在CLion中创建一个简单的OpenCV项目
。
一、下载OpenCV
OpenCV官方下载Windows版本的OpenCV安装包:
https://opencv.org/releases/

二、解压OpenCV
双击opencv-4.10.0-windows.exe
解压到一个自定义的目录,这里我解压到了D盘目录下。

解压中效果如下图所示。

解压完成后,可以看到包含两个文件夹,一个是build,一个是sources。

build文件夹
是编译好的OpenCV MSVC版(对应开发工具为VS2022)sources文件夹
是opencv的源码
所以,如果我们要使用CLion开发OpenCV
,需要使用MinGW工具,自行进行编译。
这里关于MSVC版
和MinGW版
编译包,进行一个简单的介绍说明:
MSVC版
: OpenCV 文件夹会有build(已编译好的库)
和sources(源码)
使用 MSVC 的话,直接在将D:\Program\opencv\build\x64\vc16
配置到路径即可使用;MinGW版
:OpenCV 没有为我们编译好 MinGW 版,所以只能用户自行编译。
三、编译OpenCV
编译OpenCV
需要用到Mingw编译器
和Cmake工具
,关于这两个工具的下载与安装,这里不进行详细介绍,请大家自行搜索并安装。
下边我们介绍,用Cmake工具
与Mingw编译器
,如何编译opencv:
- 在
opencv
文件夹下,创建一个新的mingw-build
文件夹用于存放编译后的内容。

- 找到本地电脑的cmake安装目录,找到其
CMake\bin
目录下的cmake-gui.exe

上方选择source为opencv下的source文件夹
;下方选择刚刚建立的mingw bulid文件夹
;点击下方的Configure
按钮,并选择类型为MinGW Makefiles
,后点击Finish
。

第一次编译后,会出现很多红色的这里不用担心。

再次点击Configure之后红色就会消失。

最后,点击Generate。

到这里Cmake就可以关掉了。
- 下边,我们打开CMD命令行,cd到
opencv\mingw-build
文件夹, 输入mingw32-make -j16
命令。

这里的j16
是指使用16核加速编译,如果电脑核心多的话可以增加或减少。
- 最后执行
mingw32-make install
命令,将刚刚编译的文件整合到一起。
install
:告诉make工具执行Makefile中名为install
的规则。通常情况下,install
规则会负责将编译好的二进制文件、库文件、头文件以及其他资源复制到系统的合适位置,以便其他程序能够找到并使用它们。例如,可执行文件可能会被复制到/bin
,而头文件可能会被复制到/include
。

- 最后,将
D:\Program\opencv\mingw-build\bin
路径添加到环境变量
中。

四、创建
打开Clion工具,新建C++项目,编写以下代码:
CMakeCache.txt
java
# 指定CMake最低版本要求,确保使用了至少3.23版本的CMake。
cmake_minimum_required(VERSION 3.23)
# 定义项目名称为CLion_OpenCV_Demo,并设置使用的默认语言(如果需要)。
project(CLion_OpenCV_Demo)
# 设置C++编译标准为C++14。
set(CMAKE_CXX_STANDARD 14)
#OpenCV
# 设置OpenCV_DIR变量,指向OpenCV构建目录下的bin文件夹路径,
set(OpenCV_DIR "D:/Program/opencv/mingw-build/bin")
# 尝试查找系统中安装的OpenCV库。REQUIRED选项表示如果找不到OpenCV,则停止配置过程并抛出错误。
find_package(OpenCV REQUIRED)
# 将OpenCV的头文件目录添加到当前项目的编译指令中,使得源代码可以包含OpenCV的头文件。
include_directories(${OpenCV_INCLUDE_DIRS})
# 添加链接器搜索路径,即OpenCV库文件所在的目录。
link_directories(${OpenCV_LIBRARY_DIRS})
# 定义可执行文件名和它的源文件列表。这里只有一份源文件main.cpp。
add_executable(CLion_OpenCV_Demo main.cpp)
# 链接目标可执行文件与OpenCV库,使得在链接阶段会将指定的OpenCV库链接到最终的可执行文件中。
target_link_libraries(CLion_OpenCV_Demo ${OpenCV_LIBS})
main.cpp
java
#include <iostream>
#include <opencv2/opencv.hpp>
using namespace std;
using namespace cv;
int main() {
// 使用imread函数从文件路径加载图像到Mat对象中
Mat img = imread("../android.png");
// 检查是否成功加载了图像。如果img为空,则表示加载失败。
if (img.empty()) {
cout << "Error" << endl;
return -1;
}
// 使用imshow函数创建一个窗口,并在其中显示名为"Lena"的图像。
imshow("Lena", img);
// 等待用户按键事件。没有参数时会无限期等待直到任意键被按下。
// 这个调用也防止了显示窗口立即关闭。
waitKey();
return 0;
}
运行程序,输出如下UI界面,代表CLion运行OpenCV成功。

五、参考
Clion使用OpenCV环境配置
https://www.jianshu.com/p/4f5d372e3927
WIN10+CLion+Opencv配置教程
https://blog.csdn.net/DeepLearningJay/article/details/120214602