ubuntu 源码安装 opencv + opencv_contrib

安装

安装前一定先看一遍官方教程Installation in Linuxopencv_contrib)和以下全文,尤其是最后的问题
以opencv 4.2.0版本为例,home下的Downloads文件夹里有opencv-4.2.0opencv_contrib-masteropencv_need三个文件夹,分别存放着opencv 4.2.0的源码、opencv contrib的源码和问题三中自己手动下载的所有文件

准备

  • 安装所有必须的软件和依赖项。如果显示E: Unable to locate package xxxx,把镜像源更换为清华的应该就能解决。
sudo apt-get install build-essential cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
  • 可选的依赖项:除了python的两个,其他的我全装了(都是处理各种图片格式的库)。若libjasper-dev不能安装,参考问题一。
sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev

获取源码

如果下载不动的话可以找找其他的方法

git clone https://github.com/opencv/opencv.git
git clone https://github.com/opencv/opencv_contrib.git

上面的默认获取的是最新的源码,对应的是4.x版本。如果需要选择其他版本的(比如3.4 or 2.4),需要clone不同的分支,比如

git clone -b 3.4 https://github.com/opencv/opencv.git
git clone -b 3.4 https://github.com/opencv/opencv_contrib.git

编译

如果可以的话,使用ccmake而不是cmake,因为ccmake可以想cmake gui那样选择参数,而不是在命令后面跟一大堆参数;如果可以的话,使用cmake gui而不是ccmake,因为cmake gui可以将参数归类后折叠起来。

推荐Release和Debug都编译安装,因为这两个版本的库文件名字都是不一样的(debug版本的会多一个d),不会发生覆盖的情况;而头文件的内容都是一样的,覆盖了也没有关系。

Release版本

cd opencv-4.2.0/
mkdir build-release
cd build-release
#如果报错,在-D后加个空格;
#-DOPENCV_EXTRA_MODULES_PATH=后面跟的是opencv_contrib的路径,因为我的opencv_contrib-master和opencv-4.2.0两个文件夹在同一个文件夹下
#-DBUILD_opencv_java和-DBUILD_opencv_python是用来选择是否要java和python的
cmake -DCMAKE_BUILD_TYPE=RELEASE -DOPENCV_EXTRA_MODULES_PATH=../../opencv_contrib-master/modules  ..
#若显示	-- Configuring done
#		-- Generating done
#则进行下一步,-j7表示多线程
make -j6
sudo make install

camke的一些选项说明:

  • BUILD_opencv_java:是否编译Java版本的OpenCV
  • BUILD_opencv_python:是否编译Python版本的OpenCV
  • OPENCV_EXTRA_MODULES_PATH:opencv_contrib的路径
  • CMAKE_INSTALL_PREFIX:安装路径。如果想要同时安装opencv2.x和opencv3.x,需要设定这个,因为它们俩的安装路径是重合的,比如在/usr/local/include下面都会创建两个文件夹opencvopencv2;但是想装一个4.x,一个3.x(or 2.x)就可以不用设置这个,因为opencv4.x会在/usr/local/include先创建一个文件夹opencv4,然后在里面创建文件夹opencv2(没有文件夹opencv

注:上面的选项添加在..前面

Debug版本

cd opencv-4.2.0/
mkdir build-debug
cd build-debug

cmake -DCMAKE_BUILD_TYPE=RELEASE -DOPENCV_EXTRA_MODULES_PATH=../../opencv_contrib-master/modules  ..

make -j6
sudo make install

问题

问题一:安装可选依赖包libjasper-dev的时候,显示E: Unable to locate package libjasper-dev

sudo add-apt-repository "deb http://security.ubuntu.com/ubuntu xenial-security main"
sudo apt update
sudo apt install libjasper1 libjasper-dev
sudo add-apt-repository --remove "deb http://security.ubuntu.com/ubuntu xenial-security main"
#其中libjasper1是libjasper-dev的依赖包

参考教程:Ubuntu18.04下安装OpenCv依赖包libjasper-dev无法安装的问题

问题二:如果在cmake编译的时候,显示No package ‘gtk±3.0’ found
在这里插入图片描述

# 虽然不会报错,但是以防万一,我觉得还是装了比较好
sudo apt-get install libgtk-3-dev

问题三:如果在cmake编译的时候,需要到Github下载一些文件,但是下载不下来,显示Download failed: 35; "SSL connect error",例下图
在这里插入图片描述

  • 方法一:使用http_proxy。根据自己的IP地址和端口号在终端中输入以下内容,注意引号里面的都是http,没有https
export http_proxy="http://IP地址:端口号"
export https_proxy="http://127.0.0.1:1080"

取消http_proxy

unset http_proxy
unset https_proxy

如果没有IP地址和端口号,或者不知道我在讲啥的话,就用后面的方法吧

  • 方法二:需要手动下载每一个文件,并修改cmake文件中的文件路径。步骤如下:
  1. 打开下载所需文件对应的cmake文件。文件路径一般在报错下面的Call Stack (most recent call first)紧跟的第一行。例如
    在这里插入图片描述

  2. 找到cmake文件中的需要下载文件的URL,例如"https://raw.githubusercontent.com/opencv/opencv_3rdparty/${IPPICV_COMMIT}/ippicv/"。其中的${IPPICV_COMMIT}在同一个文件中有定义,为一长串的字母数字组合的字符串。最后,在URL的最后加上文件名,同样也有定义,针对不同的系统与环境会有所不同;或者在cmake编译的时候看它的输出也行。
    得到最终的下载连接为 "https://raw.githubusercontent.com/opencv/opencv_3rdparty/32e315a5b106a7b89dbed51c28f8120a48b368b4/ippicv/ippicv_2019_lnx_intel64_general_20180723.tgz"
    在这里插入图片描述

  3. IDM下载完后传给Linux,放到特定的文件夹下,比如/home/orz/Downloads/opencv_need/

  4. 把所有的.cmake文件里的"https://。。。"改成"file:///home/orz/Downloads/opencv_need/"

"file://{刚刚手动下载的IPP文件的上一级目录}/"

最后,我将自己所需手动下载的所有东西整理成了一个表格,仅供参考:

文件名.cmake文件位置下载连接
IPPICV/home/orz/Downloads/opencv-4.2.0/3rdparty/ippicv/ippicv.cmakehttps://raw.githubusercontent.com/opencv/opencv_3rdparty/32e315a5b106a7b89dbed51c28f8120a48b368b4/ippicv/ippicv_2019_lnx_intel64_general_20180723.tgz
boostdesc_bgm.i/home/orz/Downloads/opencv_contrib-master/modules/xfeatures2d/cmake/download_boostdesc.cmakehttps://raw.githubusercontent.com/opencv/opencv_3rdparty/34e4206aef44d50e6bbcd0ab06354b52e7466d26/boostdesc_bgm.i
boostdesc_bgm_bi.i同上https://raw.githubusercontent.com/opencv/opencv_3rdparty/34e4206aef44d50e6bbcd0ab06354b52e7466d26/boostdesc_bgm_bi.i
boostdesc_bgm_hd.i同上https://raw.githubusercontent.com/opencv/opencv_3rdparty/34e4206aef44d50e6bbcd0ab06354b52e7466d26/boostdesc_bgm_hd.i
boostdesc_binboost_064.i同上https://raw.githubusercontent.com/opencv/opencv_3rdparty/34e4206aef44d50e6bbcd0ab06354b52e7466d26/boostdesc_binboost_064.i
boostdesc_binboost_128.i同上https://raw.githubusercontent.com/opencv/opencv_3rdparty/34e4206aef44d50e6bbcd0ab06354b52e7466d26/boostdesc_binboost_128.i
boostdesc_binboost_256.i同上https://raw.githubusercontent.com/opencv/opencv_3rdparty/34e4206aef44d50e6bbcd0ab06354b52e7466d26/boostdesc_binboost_256.i
boostdesc_lbgm.i同上https://raw.githubusercontent.com/opencv/opencv_3rdparty/34e4206aef44d50e6bbcd0ab06354b52e7466d26/boostdesc_lbgm.i
vgg_generated_48.i/home/orz/Downloads/opencv_contrib-master/modules/xfeatures2d/cmake/download_vgg.cmakehttps://raw.githubusercontent.com/opencv/opencv_3rdparty/fccf7cd6a4b12079f73bbfb21745f9babcd4eb1d/vgg_generated_48.i
vgg_generated_64.i同上https://raw.githubusercontent.com/opencv/opencv_3rdparty/fccf7cd6a4b12079f73bbfb21745f9babcd4eb1d/vgg_generated_64.i
vgg_generated_80.i同上https://raw.githubusercontent.com/opencv/opencv_3rdparty/fccf7cd6a4b12079f73bbfb21745f9babcd4eb1d/vgg_generated_80.i
vgg_generated_120.i同上https://raw.githubusercontent.com/opencv/opencv_3rdparty/fccf7cd6a4b12079f73bbfb21745f9babcd4eb1d/vgg_generated_120.i
face_landmark_model.dat/home/orz/Downloads/opencv_contrib-master/modules/face/CMakeLists.txthttps://raw.githubusercontent.com/opencv/opencv_3rdparty/8afa57abc8229d611c4937165d20e2a2d9fc5a12/face_landmark_model.dat

PS: 尝试了opencv 3.4.x对应的opencv_contrib,发现所有需要手动下载的文件跟opencv 4.x的一致,所以opecv_need文件夹直接共用就好了。

参考教程:手动安装OpenCV下的IPP加速库

  • 方法三:对于不需要的dnnvgg,可以在cmake编译的时候,在命令后面加上BUILD_opencv_*参数,比如:
#我没用过这个方法,不知道行不行得通
cmake -DOPENCV_EXTRA_MODULES_PATH=<opencv_contrib>/modules -DBUILD_opencv_legacy=OFF <opencv_source_directory>

参考教程:opencv_contrib

问题四:报错Duplicated modules NAMES has been found,如下图
在这里插入图片描述
因为版本不匹配!!!opencv contrib也是分版本的!!!在从github上下载opencv contrib的时候,需要选择banch。master指的是最新的版本,即opencv 4.x,3.4应该指的是opencv 3.4.x的(不懂了,那3.4.x之前的版本咋办?),如图:
在这里插入图片描述

现成下载

害,一段时间后再来看,觉得还是自己装一遍比较好,因为不同人电脑上的各种软件的版本是不一样的,拿了我打包好的opencv是没有用的吧,不然就没有那么多需要源码编译了。


我把最终的OpenCV打包了,需要的自取:
链接:https://pan.baidu.com/s/1p4wP1kJUmmzXlXghKsIaRg 提取码:604w
链接:https://pan.baidu.com/s/1d6A8pZ3jeOCO5L-1XFgSug 提取码:5kml

  • 使用方法:
  1. 先安装所需的其他软件和依赖包
#安装所有必须的软件和依赖项
sudo apt-get install build-essential cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
#可选项。若libjasper-dev不能安装,参考问题一。除了python的两个,其他的我全装了(都是处理各种图片格式的库)sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev
  1. 将压缩包解压到任意位置,然后进入opencv-x.x.x文件夹中的build文件夹,执行命令
#如果报错,在-D后加个空格;-DOPENCV_EXTRA_MODULES_PATH=后面跟的是opencv_contrib的路径,因为我的opencv_contrib-master和opencv-4.2.0两个文件夹在同一个文件夹下
cmake -DCMAKE_BUILD_TYPE=RELEASE -DCMAKE_INSTALL_PREFIX=/usr/local -DOPENCV_EXTRA_MODULES_PATH=../../opencv_contrib-master/modules -DBUILD_opencv_java=OFF -DBUILD_opencv_python=OFF .. 
#若显示	-- Configuring done
#		-- Generating done
#则进行下一步,-j7表示多线程
make -j7 
sudo make install

PS压缩包内的Read.me与这里有点出入,以这里的为准。因为更新网盘压缩包里的文件太麻烦了。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在Ubuntu 20.04上进行安装OpenCV,你可以按照以下步骤进行操作: 1. 首先,确保你的系统已经更新到最新版本。你可以运行以下命令来更新系统: ``` sudo apt update sudo apt upgrade ``` 2. 创建一个目录来存放OpenCV码和构建文件。你可以运行以下命令来创建目录: ``` mkdir ~/opencv_build && cd ~/opencv_build ``` 3. 克隆OpenCVOpenCV contrib的码到你的本地目录。你可以运行以下命令来克隆码: ``` git clone https://github.com/opencv/opencv.git git clone https://github.com/opencv/opencv_contrib.git ``` 4. 进入到OpenCV码目录,并创建一个用于构建的目录。你可以运行以下命令来进入目录并创建构建目录: ``` cd opencv mkdir build && cd build ``` 5. 使用CMake配置OpenCV的构建选项。你可以运行以下命令来配置构建: ``` cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib/modules .. ``` 6. 编译和安装OpenCV。你可以运行以下命令来进行编译和安装: ``` make -j$(nproc) sudo make install ``` 7. 安装完成后,你可以通过运行以下命令来验证OpenCV是否成功安装: ``` pkg-config --modversion opencv4 ``` 这样,你就可以在Ubuntu 20.04上成功进行安装OpenCV了。请注意,这个过程可能需要一些时间和资,具体取决于你的系统配置和网络速度。希望对你有帮助!\[1\]\[2\]\[3\] #### 引用[.reference_title] - *1* *2* [如何在 Ubuntu 20.04 上安装 OpenCV](https://blog.csdn.net/qq_33532713/article/details/122994933)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [在 Ubuntu 20.04 上安装 OpenCV](https://blog.csdn.net/qq_58060770/article/details/127553911)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值