ubuntu 源码安装 opencv + opencv_contrib
教程
- 安装
- 准备
- 获取源码
- 编译
- Release版本
- Debug版本
- 问题
- 现成下载
安装
安装前一定先看一遍官方教程(Installation in Linux,opencv_contrib)和以下全文,尤其是最后的问题
以opencv 4.2.0版本为例,home
下的Downloads
文件夹里有opencv-4.2.0
、opencv_contrib-master
和opencv_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
下面都会创建两个文件夹opencv
和opencv2
;但是想装一个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-debugcmake -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文件中的文件路径。步骤如下:
打开下载所需文件对应的cmake文件。文件路径一般在报错下面的
Call Stack (most recent call first)
紧跟的第一行。例如
找到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"
用IDM下载完后传给Linux,放到特定的文件夹下,比如
/home/orz/Downloads/opencv_need/
。把所有的.cmake文件里的
"https://。。。"
改成"file:///home/orz/Downloads/opencv_need/"
"file://{刚刚手动下载的IPP文件的上一级目录}/"
最后,我将自己所需手动下载的所有东西整理成了一个表格,仅供参考:
文件名 | .cmake文件位置 | 下载连接 |
---|---|---|
IPPICV | /home/orz/Downloads/opencv-4.2.0/3rdparty/ippicv/ippicv.cmake | https://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.cmake | https://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.cmake | https://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.txt | https://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加速库
- 方法三:对于不需要的
dnn
和vgg
,可以在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
- 使用方法:
- 先安装所需的其他软件和依赖包
#安装所有必须的软件和依赖项
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
- 将压缩包解压到任意位置,然后进入
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与这里有点出入,以这里的为准。因为更新网盘压缩包里的文件太麻烦了。
ubuntu 源码安装 opencv + opencv_contrib相关推荐
- 三星note4安装linux,Leanote Ubuntu 源码安装
Leanote Ubuntu 源码安装 1 安装golang 2 安装MongoDB 2.1 安装MongoDB 从 Mongodb 官网 获取相应系统的最新版安装链接,笔者以 Ubuntu18.04 ...
- mac 编译源码安装 opencv
无法直接 brew install opencv时,可以按照本教程安装. 第一步:brew install cmake 第二步:编译源码安装 opencv,参照Mac系统下的Opencv开发环境搭建- ...
- Ubuntu源码安装Tomcat7
1.上传安装包到linux服务器 在Ubuntu服务器上传tomcat存放目录 /usr/local#ls apache-tomcat-7.0.99.tar 2.进入到/usr/local/目录: $ ...
- Ubuntu源码安装php-7.2.23
1.切换到安装目录,解压 #cd /usr/local/src #tar -zxvf php-7.2.23.tar.gz #cd php-7.2.23 下载链接 :https://www.php.ne ...
- 一次令人吐血的ubuntu源码安装gcc-5.4.0经历
ubuntu20.04源码安装gcc-5.4.0 虽然cilkplus已经被弃用了,但是因为代码里用到了cilkplus,所以还是要安装gcc-5.4.0,因为make一直不通过,整个过程费了好大功夫 ...
- linux卸载kong,Ubuntu 源码安装Kong
安装openresty tar xzvf openssl-1.0.2h.tar.gz 以下是我个人安装流程 tar xzvf openresty-1.9.15.1.tar.gz 安装openresty ...
- SUMO ubuntu 源码安装
在sumo使用过程中,我们如果使用sudo apt-get install sumo 时,只能安装sumo的0.32版本,如果我们想装1.x版本需要通过源码进行编译. Linux Build - SU ...
- ubuntu 源码安装nginx
2019独角兽企业重金招聘Python工程师标准>>> 下载nginx 地址:http://nginx.org/en/download.html 解压安装,这个不解释 问题出现1: ...
- Ubuntu源码安装Nginx
2019独角兽企业重金招聘Python工程师标准>>> Nginx是常用Web服务器,市场占有率直追老牌Web服务器软件Apache.Nginx除了作为Web服务器以外,还可以作为邮 ...
最新文章
- ThreadLocalMap的enrty的key为什么要设置成弱引用
- Java的新项目学成在线笔记-day10(二)
- C# 进程Process基本的操作说明
- 我使用阿里云做直播,有什么手段保护直播安全?
- mysql语句修改zencart产品原价为特价的倍数
- 转:Python: 什么是*args和**kwargs
- 变革中国:市场经济的中国之路
- 北京朝阳行政区划(朝阳区街道行政区划) 用于shp数据转为geojson格式作为ECharts地图
- ThinkPad 鼠标 滚轮左右倾斜切换win10 虚拟桌面
- 如何有效管理项目进度?管控关键里程碑?
- java设计扑克牌比大小_2019-08-09Day10 单例设计模式,扑克牌比大小游戏(Java)
- 基于京东micro-app微前端框架的项目实践
- Ubuntu下adb无法识别android设备的解决方法
- Design compiler综合教程
- Freertos 任务切换
- 200115(最小生成树的Kruskal算法(贪心))
- Class - 7 用户输入和while循环
- Java数字化智慧校园平台源码,智慧学校源码+微信小程序+人脸电子班牌
- 在TutorABC学英语 进步让你看得见
- 安防监控实训平台-安防监控实训装置
热门文章
- 贡献给个人课表的第一个爬虫
- 跟原力一起玩转EOS源码-Push Transaction机制
- AD10使用SVN更新嘉立创PCB集成库的方法
- 有线无线网络准入解决方案有哪些?
- php http库,7个最好的PHP Http客户端库
- 都在说人工智能,华为云眼中企业该怎样拥抱AI?
- UiPath学院Level1习题集(近200道答案及解析)
- HTML+CSS+JS 生鲜水果蔬菜商城网站设计——天天生鲜水果蔬菜商城(10页) web前端设计与开发期末作品_期末大作业
- Selective Cross-City Transfer Learning for Traffic Prediction via Source City Region Re-Weighting笔记
- Matlab函数语法(函数可以接受多个输入参数,并可能返回多个输出参数)