Ubuntu 安装 OpenCV 4.5.5 详解:依赖、编译、环境配置与测试验证

许南星
许南星
发布时间:2026-08-23 | 96人浏览过
原创

前言

在 Ubuntu 上手动安装 OpenCV 4.5.5,真正容易卡住的通常不是编译命令本身,而是依赖是否齐全、`/usr/local/lib` 有没有被系统识别、`pkg-config` 能不能正确返回版本,以及测试窗口为何在远程环境里显示不出来。下面按源码准备、依赖安装、编译安装、环境配置和样例验证几个环节重新整理,既方便直接照做,也方便你在某一步报错时快速定位问题。

在 Ubuntu 上手动安装 OpenCV,常见问题不是“命令不会写”,而是源码目录怎么摆、`cmake` 之后为什么找不到库、测试程序为什么能编译却弹不出窗口。下面按“准备源码、安装依赖、编译安装、环境配置、样例验证”的顺序重新梳理一遍,方便你直接照着执行,也能在出错时快速判断问题卡在哪一步。

准备安装包与源码目录

本文使用的版本是 opencv-4.5.5.zip 和 opencv_contrib-4.5.5.zip。两份源码都下载完成后,先分别解压,再将解压后的 opencv_contrib 文件夹放入解压后的 opencv 文件夹内。

这一步的重点是先把源码结构整理好,后续进入 opencv 目录执行编译命令时,目录关系保持一致,排查问题会更直接。

先装好编译依赖

开始编译前,先安装构建工具、图形界面相关库,以及常见的图像编解码依赖。原始命令如下:

sudo apt-get install build-essential
sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev

如果你后面需要运行带窗口显示的测试程序,像 libgtk2.0-dev 这类依赖就比较关键;如果缺少图像编解码相关库,往往会体现在编译功能裁剪或运行时报错上。

在 Ubuntu 上编译并安装 OpenCV 4.5.5

1. 创建 build 目录

进入 opencv 源码目录后,新建一个单独的 build 目录:

OpenCV 4.5.5 在 Ubuntu 上的源码准备与编译安装流程图
OpenCV 4.5.5 编译安装流程把源码准备、CMake 参数和编译安装步骤放到一张流程图里,方便对照执行与排错。
cd opencv
mkdir build

把编译过程放在独立目录里,后续清理缓存、重新生成工程都会更方便。

2. 运行 CMake 生成编译配置

切换到 build 目录,执行下面的命令:

cd build
sudo cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local -D OPENCV_GENERATE_PKGCONFIG=ON ..

这里保留了几个关键参数:

  • CMAKE_BUILD_TYPE=Release:使用发布模式编译;
  • CMAKE_INSTALL_PREFIX=/usr/local:安装到 /usr/local;
  • OPENCV_GENERATE_PKGCONFIG=ON:生成 pkg-config 所需信息,便于后面查询版本和链接库。

3. 编译并安装

CMake 通过后,继续执行编译与安装:

sudo make -j4
sudo make install

-j4 表示使用 4 个并行任务编译,适合多数常见环境;如果机器核心数不同,也可以按实际情况调整。

补齐库路径与 pkg-config 环境

OpenCV 安装完成后,如果系统还找不到对应动态库,通常需要补充库路径并刷新缓存。

OpenCV 安装后的库路径、环境变量与版本检查关系图
安装后环境配置检查图聚焦安装后最容易遗漏的两类配置:动态库路径刷新和 pkg-config 环境变量。

添加动态库搜索路径

先打开配置文件:

sudo gedit /etc/ld.so.conf

在文件中加入:

/usr/local/lib

保存退出后执行:

sudo ldconfig

这一步的作用是让系统重新加载动态链接库缓存。

配置 PKG_CONFIG_PATH

如果你希望用 pkg-config 查询 OpenCV 版本或在编译时读取库信息,还需要补上环境变量。

先打开:

sudo gedit /etc/bash.bashrc

在文件末尾添加两行:

PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
export PKG_CONFIG_PATH

保存后执行:

source /etc/bash.bashrc

然后用下面的命令检查版本:

pkg-config opencv --modversion

如果这里能够正常返回版本号,说明 pkg-config 这一层已经打通。

用一个最小 C++ 程序验证安装结果

安装完成后,最直接的验证方式就是编译并运行一个简单示例,确认头文件、链接库和图像窗口都能正常工作。

OpenCV 最小测试程序的验证链路与远程显示排查重点图
测试样例与远程显示排查把本地编译验证和远程窗口显示的排查重点分开,便于快速定位问题。

Makefile 示例

CXX ?= g++
main:
	g++ main.cpp -o main -lopencv_stitching -lopencv_objdetect \
	-lopencv_photo -lopencv_calib3d -lopencv_features2d -lopencv_flann -lopencv_highgui \
	-lopencv_ml -lopencv_imgcodecs \
	-lopencv_video -lopencv_imgproc -lopencv_core -ldl -lm -lpthread -lrt
clean:
	rm -rf main

main.cpp 示例

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

using namespace std;
using namespace cv;

int main(int argc, char** argv) {
    Mat img = imread("./car.jpg", IMREAD_GRAYSCALE);
    if (img.empty()) {
        cout << "read image error" << endl;
        return -1;
    }
    imshow("car", img);
    waitKey(0);
    return 0;
}

编译与运行

make
./main

如果程序能正常读取 ./car.jpg 并弹出灰度图窗口,说明当前这套安装至少已经覆盖了基础读图、显示和链接流程。若控制台输出 read image error,优先检查图片路径;若编译阶段报缺少库,再回头核对前面的安装与环境变量配置。

VS Code Remote + XQuartz 的 X11 转发设置

如果你是在远程 Ubuntu 环境里,通过 VS Code Remote 连接并希望把 OpenCV 的图形窗口转发到本地,还需要确认 SSH 配置里开启了 X11 转发。原始配置如下:

ForwardX11 yes
ForwardX11Trusted yes
ForwardAgent yes

这部分通常用于远程显示 imshow 窗口。若程序本身能运行,但窗口始终不出现,就要把排查重点放在 X11 转发链路,而不只是 OpenCV 安装本身。

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表