Linux下如何编译安装OpenCV3.0?

在Linux系统中编译OpenCV 3.0需要经历环境准备、源码获取、CMake配置、编译安装及环境变量配置等步骤,以下是详细流程:

linux如何编译opencv3.0

环境准备

编译OpenCV 3.0需先安装必要的依赖库和工具,包括编译器、构建工具及OpenCV所需的第三方库(如图像处理、视频编解码等支持),以Ubuntu/Debian系统为例,通过以下命令安装基础依赖:

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

若需支持Python接口,还需安装Python开发库:

sudo apt install python2.7-dev python3.5-dev  # 根据系统Python版本选择

依赖库说明
| 依赖库名称 | 作用说明 |
|——————|——————————|
| build-essential | 包含gcc、g++等编译工具 |
| cmake | 项目构建工具 |
| libgtk2.0-dev | GUI支持(如图像显示窗口) |
| libavcodec-dev | 视频编解码支持(FFmpeg) |
| libjpeg-dev | JPEG图像格式支持 |
| libpng-dev | PNG图像格式支持 |

获取OpenCV 3.0源码

OpenCV 3.0的官方源码可通过GitHub或OpenCV官网下载,这里以GitHub为例:

# 创建工作目录并进入
mkdir -p ~/opencv3_build && cd ~/opencv3_build
# 克隆OpenCV 3.0.0源码(tag为3.0.0)
git clone https://github.com/opencv/opencv.git -b 3.0.0
git clone https://github.com/opencv/opencv_contrib.git -b 3.0.0  # 可选,包含额外模块

若网络较慢,也可从OpenCV官网下载0.0源码tar包,通过tar -xvf opencv-3.0.0.tar.bz2解压。

创建编译目录并配置CMake

为避免污染源码目录,需在源码外创建独立编译目录,并通过CMake生成Makefile:

linux如何编译opencv3.0

# 进入OpenCV源码目录
cd opencv
# 创建编译目录
mkdir build && cd build
# 运行CMake配置(关键参数说明见下表)
cmake -D CMAKE_BUILD_TYPE=Release 
      -D CMAKE_INSTALL_PREFIX=/usr/local 
      -D WITH_CUDA=OFF 
      -D WITH_OPENGL=ON 
      -D ENABLE_FAST_MATH=1 
      -D WITH_IPP=OFF 
      -D WITH_TBB=ON 
      -D BUILD_EXAMPLES=ON 
      -D BUILD_TESTS=OFF 
      -D BUILD_PERF_TESTS=OFF 
      -D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib/modules ..  # 若下载了contrib模块

CMake常用参数说明
| 参数 | 作用说明 |
|——————————-|————————————————————————–|
| CMAKE_BUILD_TYPE=Release | 编译类型(Release为发布版,性能优化;Debug为调试版,包含调试信息) |
| CMAKE_INSTALL_PREFIX=/usr/local| 指定安装路径(默认为/usr/local,也可自定义如/home/user/opencv3) |
| WITH_CUDA=OFF | 是否启用CUDA加速(需NVIDIA GPU及对应驱动,关闭则仅CPU编译) |
| WITH_OPENGL=ON | 是否启用OpenGL支持(3D渲染等场景需要) |
| OPENCV_EXTRA_MODULES_PATH | 指定contrib模块路径(包含人脸识别、立体匹配等扩展功能) |

编译与安装

配置完成后,执行make命令开始编译(根据CPU核心数可使用-j参数加速,如-j4使用4核并行):

# 编译(时间较长,约10-30分钟,取决于CPU性能)
make -j$(nproc)  # nproc获取CPU核心数,或直接使用make -j4
# 安装(需root权限)
sudo make install

编译过程中若报错(如缺少依赖库),需根据错误提示安装对应库,例如缺少libjasper-dev则安装sudo apt install libjasper-dev,然后重新运行cmakemake

配置环境变量

安装完成后,需将OpenCV库路径添加到系统动态链接库配置中,以便程序运行时能找到依赖库:

# 临时生效(当前终端有效)
export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH
# 永久生效(写入~/.bashrc)
echo 'export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH' >> ~/.bashrc
source ~/.bashrc

测试安装是否成功

编写一个简单的C++程序测试OpenCV功能,如读取并显示图片:

# 创建测试文件
cd ~ && gedit test_opencv.cpp

输入以下代码:

linux如何编译opencv3.0

#include <opencv2/opencv.hpp>
int main() {
    cv::Mat image = cv::imread("/usr/share/pixmaps/ubuntu-logo.png");  // 替换为本地图片路径
    if (image.empty()) {
        std::cerr << "Could not read the image!" << std::endl;
        return 1;
    }
    cv::imshow("OpenCV Test", image);
    cv::waitKey(0);
    return 0;
}

编译并运行(需链接OpenCV库):

# 编译(使用pkg-config自动获取库路径)
g++ test_opencv.cpp -o test_opencv $(pkg-config --cflags --libs opencv)
# 运行
./test_opencv

若弹出显示图片的窗口,说明OpenCV 3.0编译安装成功。

相关问答FAQs

Q1: 编译时报错“fatal error: stdlib.h: No such file or directory”如何解决?
A: 该错误表明缺少C标准库开发头文件,需安装build-essential工具包:

sudo apt install build-essential

若仍报错,可能是编译器未正确配置,可通过gcc --versiong++ --version检查是否安装成功。

Q2: 运行程序时报错“libopencv_core.so.3.0: cannot open shared object file”如何解决?
A: 此错误为系统无法找到OpenCV动态库,需确认环境变量是否配置正确:

  1. 检查LD_LIBRARY_PATH是否包含OpenCV库路径(如/usr/local/lib):
    echo $LD_LIBRARY_PATH
  2. 若未包含,可通过临时生效(export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH)或永久生效(写入~/.bashrc)解决;
  3. 若已配置仍报错,可能是库文件权限问题,使用sudo ldconfig更新共享库缓存。

原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/14163.html

(0)
酷番叔酷番叔
上一篇 2025年8月22日 01:49
下一篇 2025年8月22日 02:01

相关推荐

  • Linux如何创建文本文件?常用方法有哪些?

    在Linux系统中,创建文本文件是最基础且高频的操作之一,无论是编写配置文件、Shell脚本,还是记录日志、存储数据,都离不开文本文件的创建,Linux提供了多种创建文本文件的方式,涵盖命令行工具和交互式编辑器,每种方法都有其适用场景和优缺点,本文将详细介绍这些方法,帮助用户根据实际需求选择最合适的操作方式,使……

    2025年8月26日
    19000
  • Linux抓包的方法与工具有哪些?

    在Linux系统中,抓包是网络分析、故障排查和安全审计的核心技能,通过捕获网络接口的数据包,可以直观查看流量内容、协议交互和异常行为,Linux环境下最常用的抓包工具是tcpdump,它功能强大且灵活,支持多种过滤条件和输出格式;Wireshark(图形界面)和tshark(命令行)也是常用选择,本文将详细介绍……

    2025年9月18日
    18200
  • Linux系统中如何删除隐藏文件?详细命令行操作步骤有哪些?

    在Linux系统中,隐藏文件是指以英文句点(.)开头的文件或目录,通常用于存储系统配置、临时数据或用户个性化设置,bashrc、.ssh、.local等目录,这些文件默认不会在常规的ls命令输出中显示,需要通过特定选项才能查看和操作,删除隐藏文件时需谨慎,尤其是系统级隐藏文件,误删可能导致程序异常或系统故障,以……

    2025年9月9日
    19500
  • Linux如何知道设备CPU型号?

    Linux系统获取设备CPU型号信息的方法多样,既包括命令行工具的直接查询,也涉及系统文件的底层读取,还可通过编程接口实现程序化获取,这些方法各有特点,适用于不同场景,如日常运维、系统监控或开发调试,以下从常用命令、系统文件、编程接口及架构差异等方面详细说明Linux如何识别CPU型号,命令行工具:快速直观获取……

    2025年10月7日
    16600
  • Linux如何创建脚本文件及打开方法?

    在Linux系统中,脚本文件是实现自动化任务的核心工具,通过编写脚本可以批量执行命令、简化重复操作,创建和打开脚本文件是Linux用户的基础技能,本文将详细介绍具体操作步骤、常用方法及注意事项,创建脚本文件的方法Linux中创建脚本文件主要通过命令行或图形界面完成,以下是常用命令行方法:使用touch命令创建空……

    2025年9月19日
    16200

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信