当前位置: 代码迷 >> 综合 >> linux下opencv-3.4+opencv_contrib-3.4 源码编译安装
  详细解决方案

linux下opencv-3.4+opencv_contrib-3.4 源码编译安装

热度:94   发布时间:2023-10-11 18:40:08.0

自己搭建各种开源视觉环境时都需要在linux下安装opencv,除却window,只linux下安装opencv来来回回也有七八次了吧。一直觉得这种搭建环境的简单基础操作没必要写博客,不过考虑到偶尔出现的小问题,还是做个记录吧!方便下次再搭建新环境时直接找到答案,毕竟时过境迁,容易忘掉一些问题点!

一、源码下载

opencv官网或着github下载源码包opencv-3.4和附加包opencv_contrib-3.4(注意精确的版本号对应正确)

opencv3.4源码地址

opencv_contrib-3.4附加包源码地址

我目前下载到的最新的是3.4.8

解压到自己想要的指定目录下

注意:opencv2版本源码安装,不需要下载opencv_contrib附加包

二、cmake生成makefile文件

相关操作指令如下:

cd opencv-3.4mkdir buildcd build

 

//下面是我跟据自己需要简单设置的,基于CUDA的编译方式

cmake -D CMAKE_BUILD_TYPE=Release \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D INSTALL_PYTHON_EXAMPLES=ON \
-D OPENCV_EXTRA_MODULES_PATH=~/opencv-3.4/opencv_contrib-3.4/modules \
-D WITH_CUDA=ON ..

不需要CUDA编译方式的话最后一句改为 :

-D WITH_CUDA=OFF

三、正式编译

//根据电脑的最大线程数,我的是四核八线程 可以用sudo make -j8

sudo make -j4 

然后进行安装

sudo make install

四、更新动态类链接库和bash配置
环境配置添加库路径

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

//打开后可能是空文件,不用管,在文件内容最后添加即可

/usr/local/lib

更新系统库

sudo ldconfig

配置bash

sudo gedit /etc/bash.bashrc  

//在末尾添加

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

保存,执行如下命令使得配置生效

source /etc/bash.bashrc

更新
 

sudo updatedb  

五、测试
1. 查看当前安装opencv版本号

pkg-config opencv --modversion

显示如:3.4.8

后面你可以写个简单的opencv程序测试下效果

六、遇到问题

(1)ippicv_2019_lnx_intel64_general_20180723.tgz 下载慢,卡住的问题。解决办法手动下载后放在自我指定的目录下,我放在了opencv-3.4目录下,即与build同级目录下。

然后修改opencv里相关配置文件

gedit ~/opencv-3.4/3rdparty/ippicv/ippicv.cmake
"https://raw.githubusercontent.com/opencv/opencv_3rdparty/${IPPICV_COMMIT}ippicv/"
# 改为手动下载的文件的本地路径(也就是将网络下载的模式改为本地文件下载的模式
"file:~/opencv-3.4/"

(2)face_landmark_model.dat 同上(1)手动下载

gedit /home/usrname/opencv_path/opencv/3rdparty/ippicv/ippicv.cmake

改为手动下载的文件的本地路径(也就是将网络下载的模式改为本地文件下载的模式)

"file:~/opencv-3.4/"

(3)在安装opencv的make编译过程中,报关于ceres的错误,一开始觉得可能是ceres版本不对,
尝试,卸载掉已经安装的ceres-solve后问题解决。

注意:以上(1)(2)(3)每个问题相应更改后,都需要重新cmake一下,再进行make

附加:
另外在安装cuda时,安装cuda后需要配置环境变量
即在~/.bashrc中添加

export CUDA_HOME=/usr/local/cuda-9.0
export PATH=/usr/local/cuda-9.0/bin:$PATH
LD_LIBRARY_PATH=/usr/local/cuda-9.0/lib64:$LD_LIBRARY_PATH

然后
source使其生效

同时也需要配置动态链接库

gedit /etc/ld.so.conf.d/cuda.conf

添加:

/usr/local/cuda/lib64

更新生效

sudo ldconfig

后面再遇到其它小问题,会在此文基础上继续补充~