在Linux操作系统下正确安装OpenCV的保姆级教程

前言

我是在虚拟机上跑的 Linux 5.8.0-44-generic。 配置如下:

在Linux操作系统下正确安装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
sudo apt-get install libavcodec-dev libavformat-dev
libswscale-dev libv4l-dev liblapacke-dev
sudo apt-get install libxvidcore-dev libx264-dev
sudo apt-get install libatlas-base-dev gfortran
sudo apt-get install ffmpeg

第二步:下载 opencv 和 opencv_contrib 源码

从 GitHub 下载 opencv 和 opencv_contrib 源码,如果你是刚刚 安装 Linux,那么最好就是修改源,不然下载会非常非常慢。

具体操作请移步百度: 如何修改 Linux 源。

我这里用的都是 4.2.0 的版本。

OpenCV和contirb 的源码下载路径:

OpenCV:https://github.com/opencv/opencv/releases

opencv_contrib:https://github.com/opencv/opencv_contrib/releases

然而在下载过程中可能会出现下载不完全的情况(起码我是这样的),往往出现的问题是缺少 boostdesc_bgm.i 等问题。所以我们需要提前下载好这些文件,以防不时之需。

下载完以后应该是这样子的:

在Linux操作系统下正确安装OpenCV的保姆级教程

第三步:解压缩包

通过命令解压 opencv 和 opencv_contirb

tar -zxvf opencv-4.5.1.tar.gz
tar -zxvf opencv_contirb-4.5.1.tar.gz

然后可以得到这样的两个文件夹:

在Linux操作系统下正确安装OpenCV的保姆级教程

第四步:移动文件

通过命令把 contrib 文件移动到 opencv 文件夹里面:

sudo cp -r opencv_contrib-4.5.1 opencv-4.5.1

打开 opencv 里面应该是长这个样子的:

在Linux操作系统下正确安装OpenCV的保姆级教程

通过命令,在 opencv 文件夹里面新建一个文件夹 bulid,然后进入这个文件夹。

sudo mkdir build
cd bulid

第五步:生成 makefile 文件

使用命令生成 makefile 文件,这里的命令不要原封不动的粘贴复制,要根据自己的路径进行修改,比如我 的 opencv 文件夹是在/home/omega-lee/下,就可以像下面那样写。这 个过程大概需要几十秒就可以完成。

【johnnywei@UbJohnnywei:~/OpenCV_Source/opencv-4.5. 1/build】$ sudo cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local -D OPENCV_EXTRA_MODULES_PATH=/home/johnnywei/Ope nCV_Source/opencv-4.5.1/opencv_contrib-4.5.1/modules/ ..

第六步:进行 make 编译

我的虚拟机是 4 核的所以是 j4,这个根据自己的机子进行选择,多核心 编译能加快速度。大概需要 30 多分钟吧。 

sudo make -j4

在进行 make 的时候,大概到 77%左右就会出现错误,提示你缺少.i 文件。这个时候打开之前下载好的.i 文件夹,通过命令移植到缺失目录下。

[ 77%] Building CXX object modules/xfeatures2d/CMakeFiles/opencv_xfeatures2d.dir/src/boostdesc. cpp.o /home/johnnywei/OpenCV_Source/opencv-4.5.1/opencv_contrib-4.5.1/ modules/xfeatures2d/src/boostdesc.cpp:654:20: fatal error: boostdesc_bgm.i: 没有那个文件或目录 654 | #include "boostdesc_bgm.i" | ^~~~~~~~~~~~~~~~~ compilation terminated. make[2]: *** [modules/xfeatures2d/CMakeFiles/opencv_xfeatures2d.dir/build.make:9 4 : modules/xfeatures2d/CMakeFiles/opencv_xfeatures2d.dir/src/boostdesc. cpp.o] 错误 1 make[1]: *** [CMakeFiles/Makefile2:6818 : modules/xfeatures2d/CMakeFiles/opencv_xfeatures2d.dir/all] 错误 2 make: *** [Makefile:163:all] 错误 2 johnnywei@UbJohnnywei:~/OpenCV_Source/opencv-4.5.1/build$

在Linux操作系统下正确安装OpenCV的保姆级教程

执行拷贝的命令

【johnnywei@UbJohnnywei:~/OpenCV_Source/OpenCV_boo stdesc_file】$ sudo cp * ../opencv-4.5.1/opencv_contrib-4.5.1/modules/xfeatures2d /src/

在Linux操作系统下正确安装OpenCV的保姆级教程

在Linux操作系统下正确安装OpenCV的保姆级教程

移植完以后应该长这个样子:

在Linux操作系统下正确安装OpenCV的保姆级教程

然后继续执行编译命令:

sudo make -j4

继续等待,然后在大概 95%的时候继续报错,这个时候系统提醒你缺少某 hpp 文件,不要担心,这个文件不需要下载,直接可以在 opencv 文件夹中 找到。

通过命令打开 opencv_contrib 文件:

cd ./opencv-4.5.1/opencv_contrib-4.5.1/modules/xfe
atures2d/test

你会发现你并没有 features2d 文件夹,这个文件夹在 /opencv-4.5.1/modules 里面。

使用命令移动这个文件夹到缺失目录下:

【johnnywei@UbJohnnywei:~/OpenCV_Source】$ sudo cp -r opencv-4.5.1/modules/features2d/ opencv-4.5.1/opencv_contrib-4.5.1/modules/xfeatures2d/te st/

这下子基本问题全部解决了,继续执行 make -j4 命令编译。然后就可 以看到 100%编译完成。

接着就是安装,使用命令进行安装:

sudo make install

johnnywei@UbJohnnywei:~/OpenCV_Source/opencv-4.5.1/build$ sudo make install

第七步:配置路径

配置路径,执行下面命令配置环境变量,注意如果你当前使用的是 fish shell,或者别的 shell,请退出到 bash,不然配置会出问题。

sudo vim /etc/ld.so.conf.d/opencv.conf

这个时候你可能打开文件可能是空白的,没有关系,在文件末尾添加保存并退出 /usr/local/lib 执行生效命令:

sudo ldconfig

继续打开:

sudo vim /etc/bash.bashrc

在文件末尾添加写入:

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

保存退出。

执行更新命令:

source /etc/bash.bashrc sudo updatedb

整个时候就完成了整个 opencv 的编译配置。完结散花✧ (≖ ◡ ≖ ✿)

第八步:测试 opencv

opencv 内部集成了很多测试 demo,可以通过执行这些 demo 看是否 完成 opencv 的配置。 通过命令进入到 demo 中:

cd opencv-4.2.0/samples/cpp/example_cmake

因为虚拟机可能使用不了摄像头的原因,我们就稍微的修改一下代码, 让程序显示一张图片就好了。

sudo vim example.cpp

在Linux操作系统下正确安装OpenCV的保姆级教程

修改保存后退出进行编译操作。

sudo mkdir bulid
cd bulid
sudo cmake ..
sudo make

在Linux操作系统下正确安装OpenCV的保姆级教程

编译完以会得到一个可执行文件,执行后就可以看见图片了。

好了,以上全部是在 Linux 下安装并编译 opencv 的全部过程,虽然坑 有点多,但是多操作几次就习惯了。如果在测试的时候还是没办法使用 opencv,请认真比对我给出的过程。

在Linux操作系统下正确安装OpenCV的保姆级教程

在Linux操作系统下正确安装OpenCV的保姆级教程

在Linux操作系统下正确安装OpenCV的保姆级教程

在Linux操作系统下正确安装OpenCV的保姆级教程

以上就是【OpenCV】如何在Linux操作系统下正确安装 OpenCV的详细内容,更多相关资料请阅读主机测评网其它文章!

原创文章,作者:admin,如若转载,请注明出处:https://hostingchat.cn/3170.html

(0)
admin的头像admin
上一篇 2025年8月21日 上午12:00
下一篇 2025年8月23日 上午12:00

相关推荐

  • CentOS 6与CentOS 7区别

    一、CentOS 6与CentOS 7区别 CentOS6默认采用Sysvinit风格,Sysvinit就是system V风格的init系统,Sysvinit用术语runleve…

    2017年12月14日
    000
  • Linux服务器分区格式化大容量数据盘

    对于Linux实例上挂载的大容量数据盘,采用GPT分区形式。Linux系统里,大容量数据盘一般采用xfs或者ext4文件系统。 以CentOS 7.4 64位系统为例 说明如何在L…

    2018年5月17日
    000
  • Linux必备命令(一)

    一、cd命令 cd命令用来切换工作目录至dirname。 其中dirName表示法可为绝对路径或相对路径。若目录名称省略,则变换至使用者的home directory(也就是刚lo…

    2017年12月14日
    000
  • Linux安装lnmp环境(Yum方式)

    一、lnmp简介 LNMP代表的就是:Linux系统下Nginx+MySQL+PHP这种网站服务器架构。 Linux是一类Unix计算机操作系统的统称,是目前最流行的免费操作系统。…

    2023年3月15日
    000
  • Linux环境变量详解与实战

    前言 本章节我们来看看环境变量和命令行参数是什么。我想大家可能会有疑惑,我们写的程序运行时需要 " ./ "。但是我们 ls、cd 等命令却不需要。这就和我们环…

    2025年10月14日
    000
  • Linux磁盘性能分析

    读写IO(Read/Write IO)操作 磁盘是用来给我们存取数据用的,因此当说到IO操作的时候,就会存在两种相对应的操作,存数据时候对应的是写IO操作,取数据的时候对应的是是读…

    2018年11月12日
    000
  • 光速!搜索、学习和实践 Linux 命令!!

    这一标题可能看起来很粗略且吸睛。请允许我解释一下我在本教程中将要阐释的内容。假设你想下载一个压缩文件,将其解压缩,并从命令行中将文件从一个位置移动到另一个位置。根据上面的场景,我们…

    2024年6月19日
    000
  • 在Linux上安装向日葵远程工具的详细教程

    背景 有时候客户或者维护商要远程我们的Linux服务器,此时我们就可以使用向日葵远程工具来完成。安装过程也是十分的Easy!可以说有手就行,一起来看看吧。 软件下载 用你的Linu…

    2025年6月11日
    000
  • Linux部署LAMP+Discuz+Mysql-Proxy读写分离

    MySQL读写分离的原理 其实就是让Master数据库处理事务性增、删除、修改、更新操作(CREATE、INSERT、UPDATE、DELETE),而让Slave数据库处理SELE…

    2017年12月14日
    000
  • Linux服务器快速定时CPU占用高线程的方法

    场景描述 最近遇到一个生产环境,一个程序因为代码写的有问题,导致CPU占用很高,所以需要马上排查问题,首先要先找出哪个程序,具体代码在哪里,所以需要借助jstack、jmap这些命…

    2025年8月18日
    000

发表回复

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