在Linux操作系统下正确安装OpenCV的保姆级教程
<div id="navCategory"><h5 class="catalogue">目录</h5><ul class="first_class_ul"><li>前言<ul class="second_class_ul"><li>第一步:下载依赖文件</li></ul></li><li>第二步:下载 opencv 和 opencv_contrib 源码<ul class="second_class_ul"></ul></li><li>第三步:解压缩包<ul class="second_class_ul"></ul></li><li>第四步:移动文件<ul class="second_class_ul"><li>第五步:生成 makefile 文件</li><li>第六步:进行 make 编译</li></ul></li><li>第七步:配置路径<ul class="second_class_ul"></ul></li><li>第八步:测试 opencv<ul class="second_class_ul"></ul></li></ul></div><p class="maodian"></p><h2>前言</h2><p>我是在虚拟机上跑的 <strong>Linux 5.8.0-44-generic</strong>。 配置如下:</p>
<p style="text-align:center"><img alt="" height="671" src="https://zhuji.jb51.net/uploads/allimg/20250822/2-250R216430D93.png" width="1200" /></p>
<p class="maodian"></p><h3>第一步:下载依赖文件</h3>
<p>这一步非常重要,如果是缺少某个依赖文件,编译 过程也不会出错,但是在使用 opencv 函数的时候就是提示错误,只能删了重新编译,非常的坑。 所以一定要先下载依赖文件。</p>
<p>通过以下命令来安装依赖文件。</p>
<div class="dxycode"><pre class="brush:bash;">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</pre></div>
<p class="maodian"></p><h2>第二步:下载 opencv 和 opencv_contrib 源码</h2>
<p>从 GitHub 下载 opencv 和 opencv_contrib 源码,如果你是刚刚 安装 Linux,那么最好就是修改源,不然下载会非常非常慢。</p>
<p>具体操作请移步百度: 如何修改 Linux 源。</p>
<p>我这里用的都是 4.2.0 的版本。</p>
<p><strong>OpenCV和contirb 的源码下载路径:</strong></p>
<p>OpenCV:https://github.com/opencv/opencv/releases</p>
<p>opencv_contrib:https://github.com/opencv/opencv_contrib/releases</p>
<p>然而在下载过程中可能会出现下载不完全的情况(起码我是这样的),往往出现的问题是缺少 <strong>boostdesc_bgm.i </strong>等问题。所以我们需要提前下载好这些文件,以防不时之需。</p>
<p>下载完以后应该是这样子的:</p>
<p style="text-align:center"><img alt="" height="450" src="https://zhuji.jb51.net/uploads/allimg/20250822/2-250R216430D01.png" width="1200" /></p>
<p class="maodian"></p><h2>第三步:解压缩包</h2>
<p>通过命令解压 opencv 和 opencv_contirb</p>
<div class="dxycode"><pre class="brush:bash;">tar -zxvf opencv-4.5.1.tar.gz
tar -zxvf opencv_contirb-4.5.1.tar.gz</pre></div>
<p>然后可以得到这样的两个文件夹:</p>
<p style="text-align:center"><img alt="" height="293" src="https://zhuji.jb51.net/uploads/allimg/20250822/2-250R2164306121.png" width="1142" /></p>
<p class="maodian"></p><h2>第四步:移动文件</h2>
<p>通过命令把 contrib 文件移动到 opencv 文件夹里面:</p>
<div class="dxycode"><pre class="brush:bash;">sudo cp -r opencv_contrib-4.5.1 opencv-4.5.1</pre></div>
<p>打开 opencv 里面应该是长这个样子的:</p>
<p style="text-align:center"><img alt="" height="352" src="https://zhuji.jb51.net/uploads/allimg/20250822/2-250R2164306352.png" width="1114" /></p>
<p>通过命令,在 opencv 文件夹里面新建一个文件夹 bulid,然后进入这个文件夹。</p>
<div class="dxycode"><pre class="brush:bash;">sudo mkdir build
cd bulid</pre></div>
<p class="maodian"></p><h3>第五步:生成 makefile 文件</h3>
<p>使用命令生成 makefile 文件,这里的命令不要原封不动的粘贴复制,要根据自己的路径进行修改,比如我 的 opencv 文件夹是在<strong>/home/omega-lee/</strong>下,就可以像下面那样写。这 个过程大概需要几十秒就可以完成。</p>
<blockquote><p>【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/ ..</p></blockquote>
<p class="maodian"></p><h3>第六步:进行 make 编译</h3>
<p>我的虚拟机是 4 核的所以是 j4,这个根据自己的机子进行选择,多核心 编译能加快速度。大概需要 30 多分钟吧。 </p>
<div class="dxycode"><pre class="brush:bash;">sudo make -j4</pre></div>
<p>在进行 make 的时候,大概到 77%左右就会出现错误,提示你缺少.i 文件。这个时候打开之前下载好的.i 文件夹,通过命令移植到缺失目录下。</p>
<blockquote><p>[ 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: *** 错误 1 make: *** 错误 2 make: *** 错误 2 johnnywei@UbJohnnywei:~/OpenCV_Source/opencv-4.5.1/build$</p></blockquote>
<p style="text-align:center"><img alt="" height="602" src="https://zhuji.jb51.net/uploads/allimg/20250822/2-250R216430CZ.png" width="1200" /></p>
<p>执行拷贝的命令</p>
<blockquote><p>【johnnywei@UbJohnnywei:~/OpenCV_Source/OpenCV_boo stdesc_file】$ sudo cp * ../opencv-4.5.1/opencv_contrib-4.5.1/modules/xfeatures2d /src/</p></blockquote>
<p style="text-align:center"><img alt="" height="293" src="https://zhuji.jb51.net/uploads/allimg/20250822/2-250R216430A57.png" width="977" /></p>
<p style="text-align:center"><img alt="" height="722" src="https://zhuji.jb51.net/uploads/allimg/20250822/2-250R216430J29.png" width="980" /></p>
<p>移植完以后应该长这个样子:</p>
<p style="text-align:center"><img alt="" height="531" src="https://zhuji.jb51.net/uploads/allimg/20250822/2-250R216430NB.png" width="1106" /></p>
<p>然后继续执行编译命令:</p>
<div class="dxycode"><pre class="brush:bash;">sudo make -j4</pre></div>
<p>继续等待,然后在大概 95%的时候继续报错,这个时候系统提醒你缺少某 hpp 文件,不要担心,这个文件不需要下载,直接可以在 opencv 文件夹中 找到。</p>
<p>通过命令打开 opencv_contrib 文件:</p>
<div class="dxycode"><pre class="brush:bash;">cd ./opencv-4.5.1/opencv_contrib-4.5.1/modules/xfe
atures2d/test</pre></div>
<p>你会发现你并没有 features2d 文件夹,这个文件夹在 /opencv-4.5.1/modules 里面。</p>
<p>使用命令移动这个文件夹到缺失目录下:</p>
<blockquote><p>【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/</p></blockquote>
<p>这下子基本问题全部解决了,继续执行 make -j4 命令编译。然后就可 以看到 100%编译完成。</p>
<p>接着就是安装,使用命令进行安装:</p>
<div class="dxycode"><pre class="brush:bash;">sudo make install</pre></div>
<blockquote><p>johnnywei@UbJohnnywei:~/OpenCV_Source/opencv-4.5.1/build$ sudo make install</p></blockquote>
<p class="maodian"></p><h2>第七步:配置路径</h2>
<p>配置路径,执行下面命令配置环境变量,注意如果你当前使用的是 fish shell,或者别的 shell,请退出到 bash,不然配置会出问题。</p>
<div class="dxycode"><pre class="brush:bash;">sudo vim /etc/ld.so.conf.d/opencv.conf</pre></div>
<p>这个时候你可能打开文件可能是空白的,没有关系,在文件末尾添加保存并退出 <strong>/usr/local/lib</strong> 执行生效命令:</p>
<div class="dxycode"><pre class="brush:bash;">sudo ldconfig</pre></div>
<p>继续打开:</p>
<div class="dxycode"><pre class="brush:bash;">sudo vim /etc/bash.bashrc</pre></div>
<p>在文件末尾添加写入:</p>
<div class="dxycode"><pre class="brush:bash;">export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local /lib/pkgconfig</pre></div>
<p>保存退出。</p>
<p>执行更新命令:</p>
<div class="dxycode"><pre class="brush:bash;">source /etc/bash.bashrc sudo updatedb</pre></div>
<p>整个时候就完成了整个 opencv 的编译配置。完结散花✧ (≖ ◡ ≖ ✿)</p>
<p class="maodian"></p><h2>第八步:测试 opencv</h2>
<p>opencv 内部集成了很多测试 demo,可以通过执行这些 demo 看是否 完成 opencv 的配置。 通过命令进入到 demo 中:</p>
<div class="dxycode"><pre class="brush:bash;">cd opencv-4.2.0/samples/cpp/example_cmake</pre></div>
<p>因为虚拟机可能使用不了摄像头的原因,我们就稍微的修改一下代码, 让程序显示一张图片就好了。</p>
<div class="dxycode"><pre class="brush:bash;">sudo vim example.cpp</pre></div>
<p style="text-align:center"><img alt="" height="539" src="https://zhuji.jb51.net/uploads/allimg/20250822/2-250R216430R23.png" width="1140" /></p>
<p>修改保存后退出进行编译操作。</p>
<div class="dxycode"><pre class="brush:bash;">sudo mkdir bulid
cd bulid
sudo cmake ..
sudo make</pre></div>
<p style="text-align:center"><img alt="" height="357" src="https://zhuji.jb51.net/uploads/allimg/20250822/2-250R216430VG.png" width="1003" /></p>
<p>编译完以会得到一个可执行文件,执行后就可以看见图片了。</p>
<p>好了,以上全部是在 Linux 下安装并编译 opencv 的全部过程,虽然坑 有点多,但是多操作几次就习惯了。如果在测试的时候还是没办法使用 opencv,请认真比对我给出的过程。</p>
<p style="text-align:center"><img alt="" height="614" src="https://zhuji.jb51.net/uploads/allimg/20250822/2-250R216430YB.png" width="975" /></p>
<p style="text-align:center"><img alt="" height="609" src="https://zhuji.jb51.net/uploads/allimg/20250822/2-250R216430aR.png" width="977" /></p>
<p style="text-align:center"><img alt="" src="https://zhuji.jb51.net/uploads/allimg/20250822/2-250R216430c96.gif" /></p>
<p style="text-align:center"><img alt="" src="https://zhuji.jb51.net/uploads/allimg/20250822/2-250R2164310648.gif" /></p>
<p>以上就是【OpenCV】如何在Linux操作系统下正确安装 OpenCV的详细内容,更多相关资料请阅读琼殿技术社区其它文章!</p>
頁:
[1]