在计算机视觉和图像处理领域
,OpenCV 是一个不可或缺的工具
。其为开发者提供了一系列广泛的算法
和实用工具
,支持多种编程语言,并且可以在多个平台上运行。对于希望在其项目中集成先进视觉功能的开发者来说,掌握如何配置和使用OpenCV是非常重要的。本文旨在帮助ubuntu 20.4系统
的C++开发者
快速上手,在CLion集成开发环境
中配置并使用OpenCV库
。
一、安装OpenCV
opencv安装有两种方式:
- 使用包管理器安装预编译版本(安装十分简单,但是版本只有4.2.0,且没有扩展模块且不支持Qt窗口)
- 从源码安装(比较复杂,但是推荐)
1.1 安装预编译版本
bash
sudo apt install libopencv-dev python3-opencv
这样就安装完成了。这种安装方法,默认把opencv相关文件放置在系统目录。
1.2 从源码构建安装
1.2.1 安装前准备
首先,需要安装一系列必要的工具和依赖库,包括:
bash
sudo apt update # 更新软件源
sudo apt install build-essential # 安装编译所需的库
sudo apt install g++ cmake pkg-config git make wget unzip # 安装一些必要的工具
sudo apt install libgtk-3-dev libavcodec-dev libavformat-dev libswscale-dev python3-dev python3-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libtiff5-dev libdc1394-22-dev libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev libv4l-dev libxvidcore-dev libx264-dev gfortran openexr libatlas-base-dev libopenexr-dev
1.2.2 下载OpenCV源码
然后,下载OpenCV源码。可以在官网下载相应版本的OpenCV,也可以在GitHub下载:
- 官网下载 https://opencv.org/releases/
- GitHub下载 https://github.com/opencv/opencv
两种方式都可以,这里我选择的是官网下载:

点击Source进行下载,下载完成后,解压到主目录下,并将解压后的文件重命名为opencv。

1.2.3 建立编译目录
源码解压到主目录后,进入主目录下,执行以下命令语句:
bash
cd opencv
mkdir build
cd build

这是为了在源码的根目录下建立一个临时目录,用于存放编译所产生的文件,不至于污染源码,使得你的源码可以根据不同的配置命令分别编译出多份可执行文件,每一份都很清晰,不至于混在一起。
1.2.4 编译安装源码
执行以下命令,编译安装源码:
bash
cmake -D CMAKE_BUILD_TYPE=Release -D OPENCV_GENERATE_PKGCONFIG=YES -D CMAKE_INSTALL_PREFIX=/usr/local ..
make -j4 # 4线程并行编译
sudo make install # 安装
在第一步中,配置了三个参数:
- 第一个参数
-D CMAKE_BUILD_TYPE=Release
:指定构建类型为Release 模式(优化性能,减少调试信息); - 第二个参数
-D OPENCV_GENERATE_PKGCONFIG=YES
:开启生成opencv4.pc文件,从而支持pkg-config功能(pkg-config是一个帮助编译时查找库的工具,通过opencv4.pc文件提供库的路径帮助查找库文件); - 第三个参数
-D CMAKE_INSTALL_PREFIX=/usr/local
:指定安装目录,也可以根据自己的需要自定义修改(不过强烈建议大家不要改 ,就按这个/usr/local
目录,不然后面可能会遇到一些麻烦); - 第四个参数
..
:表示从build目录中调用父目录的CMakeLists.txt。

1.3 环境变量
添加配置环境变量。
1.3.1 添加库路径
打开文件进行编辑:
bash
sudo vi /etc/ld.so.conf.d/opencv.conf
输入下面的内容,然后保存并退出
bash
/usr/local/lib
执行如下命令使得配置的路径生效
bash
sudo ldconfig
1.3.2 添加环境变量
打开文件进行编辑:
bash
sudo vi /etc/profile
在末尾加入:
bash
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib
重启,或通过以下命令更新环境变量。
bash
source /etc/profile
输入以下命令,查看linux下的opencv安装版本,如果出现下图所示的版本信息,则说明安装成功。
bash
pkg-config --modversion opencv

1.4 测试效果
完成了上述的所有步骤,就已经差不多了,接下来就开始进行验证测试。
进入opencv的源码目录,里面有一个sample/cpp/example_cmake的子目录,里面有一个很简单的例程,我们就用这个例程来进行演示:
bash
cd opencv/samples/cpp/example_cmake/
cmake . # 请注意,这里的cmake后有一个空格,然后是一个点号
make
编译成功后,通过如下命令运行:
bash
./opencv_example
若出现如下窗口,则表明运行成功。

二、创建OpenCV工程
打开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库。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成功。

三、参考
https://blog.csdn.net/weixin_44796670/article/details/115900538
https://blog.csdn.net/Cappuccino_jay/article/details/125220734
https://blog.csdn.net/whitephantom1/article/details/136406214