注:原创不易,转载请务必注明原作者和出处,感谢支持!

OpenCV目前(2019-8-1)的最新版本为4.1.1。本文将介绍如何在Ubuntu 16.04 LTS下编译安装最新的OpenCV 4.1.1版本以及4.1.1对应的contrib库。

一 安装前的准备

(1) 一台Ubuntu 16.04 LTS操作系统。选择速度快的国内更新源并更新系统

sudo apt-get update
sudo apt-get upgrade

(2) 安装最新版本的cmake-gui

进入cmake.org下载最新版本的cmake源代码,使用下面的命令安装。

解压:

tar -zxvf cmake-3.15.2.tar.gz

先安装cmake(Ubuntu软件库中的旧版cmake):

sudo apt-get install cmake

编译并安装最新版本cmake:

cd cmake-3.15.2/
mkdir build
cd build
cmake ..
make # 使用make -j,虚拟机有卡死的风险
sudo make install

cmake源码安装之后是没有GUI的,要安装cmake-gui,还需要安装cmake-qt-gui

sudo apt-get install cmake-qt-gui

(3) 下载OpenCV 4.1.1的源代码和对应4.1.1版本的contrib源码


二 编译并安装OpenCV 4.1.1

(1) 安装OpenCV依赖项

sudo apt-get install build-essential

# OpenCV官网中安装的是旧版本的libgtk2.0-dev,这里我们安装新版本的libgtk-3-dev
sudo apt-get install git libgtk-3-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev # OpenCV官网中安装2.7版本的python-dev和python-numpy,这里我们安装python 3版本的python3-dev和python3-numpy
sudo apt-get install python3-dev python3-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev

(2) 解压

tar -zxvf opencv-4.1.1.tar.gz
tar -zxvf opencv_contrib-4.1.1.tar.gz

(3) 使用cmake-gui生成Makefile

在opencv-4.1.1中建立build目录

cd opencv-4.1.1/
mkdir build

打开cmake-gui,设定source code目录为/home/your-name/opencv-4.1.1/,设定binaries目录为刚才新建的build目录,也就是/home/your-name/opencv-4.1.1/build

OpenCV默认生成的python版本是python 2.7,这就很坑爹了!为了让OpenCV编译生成python 3版本的opencv_python3,需要添加一个编译选项。在cmake-gui当中,点击Add Entry,如下图所示,填入编译选项名字PYTHON_DEFAULT_EXECUTABLE和系统中python 3的路径/usr/bin/python3.5(依实际情况而定)即可。

还有记得把编译选项OPENCV_GENERATE_PKGCONFIG打开!新版本的OpenCV默认把这个编译选项给关掉了!如果该选项没有打开,pkg-config就没法使用了。这样,你想在命令行里直接编译opencv程序会是很痛苦的事情,只能借助CMake解决。

为了编译opencv_contrib,需要在cmake-gui中将编译选项OPENCV_EXTRA_MODULES_PATH填入contrib库所在的路径,比如/home/your-name/opencv_contrib-4.1.1/modules/

(4) 编译安装OpenCV

生成Makefile之后,进入/home/your-name/opencv-4.1.1/build,编译并安装。然后是漫长的等待过程。

make -j2
sudo make install

(5) 验证

验证pkg-config功能是否正确

lzh@lzh-VirtualBox:~$ pkg-config --cflags --libs opencv4
-I/usr/local/include/opencv4/opencv -I/usr/local/include/opencv4 -L/usr/local/lib -lopencv_highgui -lopencv_ml -lopencv_video -lopencv_dnn -lopencv_objdetect -lopencv_videoio -lopencv_photo -lopencv_imgcodecs -lopencv_gapi -lopencv_stitching -lopencv_calib3d -lopencv_features2d -lopencv_imgproc -lopencv_flann -lopencv_core
lzh@lzh-VirtualBox:~$

验证成功!

验证opencv_python3是否正确安装。

lzh@lzh-VirtualBox:~$ python3
Python 3.5.2 (default, Nov 12 2018, 13:43:14)
[GCC 5.4.0 20160609] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import cv2
>>> print(cv2.__version__)
4.1.1
>>>

验证成功!

验证C++版本的opencv是否正确安装。

// Test-OpenCV-Install.cpp

#include <iostream>
#include <opencv2/opencv.hpp> using namespace cv;
using namespace std; int main(int argc, char **argv)
{
Mat src = imread("./lena.jpg", IMREAD_COLOR);
if (!src.data)
{
cerr << "Error : could not load image." << endl;
return -1;
} imshow("input", src);
waitKey(0); return 0;
}

先执行如下命令。因为你刚安装opencv,opencv所有的共享库被写入了/usr/local/lib当中,此时,为了运行上述Opencv程序,你需要执行下面的命令将/usr/local/lib里的共享库信息重新载入内存,否则,会报找不到共享库的错误!

sudo ldconfig

编译并执行上述程序。

lzh@lzh-VirtualBox:~$ g++ -g -Wall -std=c++11 Test-OpenCV-Install.cpp -o Test-OpenCV-Install `pkg-config --cflags --libs opencv4`
lzh@lzh-VirtualBox:~$ ./Test-OpenCV-Install
lzh@lzh-VirtualBox:~$

验证成功!

在Ubuntu 16.04 LTS下编译安装OpenCV 4.1.1的更多相关文章

  1. Ubuntu 16.04 LTS下matplotlib安装出错

    使用命令sudo pip3 install matplotlib已知报错,用同样的命令安装numpy和opencv却没有,因此重装linux系统两次都没有解决(我是在Vmware中创建的).报错如下: ...

  2. [Android 编译(一)] Ubuntu 16.04 LTS 成功编译 Android 6.0 源码教程

    本文转载自:[Android 编译(一)] Ubuntu 16.04 LTS 成功编译 Android 6.0 源码教程 1 前言 经过3天奋战,终于在Ubuntu 16.04上把Android 6. ...

  3. Ubuntu 16.04 LTS U盘安装要点

    一.UltraISO UltraISO是一款功能强大而又方便实用的光盘映像文件制作/编辑/转换工具,它可以直接编辑ISO文件和从ISO中提取文件和目录,也可以从CD-ROM制作光盘映像或者将硬盘上的文 ...

  4. Ubuntu 16.04 LTS 下安装MATLAB2015b 以及Matlab system error解决办法

    下载MATLAB2015b破解版 操作系统:Ubuntu 16.o4 LTS 程序文件:Matlab2015b-glnxa64破解版 解压提取文件:在ubuntu系统下可以直接提取压缩文件,得到三个文 ...

  5. Ubuntu 16.04 源码编译安装PHP7+swoole

    备注: Ubuntu 16.04 Server 版安装过程图文详解 Ubuntu16镜像地址: 链接:https://pan.baidu.com/s/1XTVS6BdwPPmSsF-cYF6B7Q 密 ...

  6. [笔记] Ubuntu 18.04源码编译安装OpenCV 4.0流程

    标准常规安装方法安装的OpenCV版本比较低,想尝鲜使用4.0版本,只好源码安装. 安装环境 OS:Ubuntu 18.04 64 bit 显卡:NVidia GTX 1080 CUDA:10.0 c ...

  7. [环境配置]Ubuntu 16.04 源码编译安装OpenCV-3.2.0+OpenCV_contrib-3.2.0及产生的问题

    1.OpenCV-3.2.0+OpenCV_contrib-3.2.0编译安装过程 1)下载官方要求的依赖包 GCC 4.4.x or later CMake 2.6 or higher Git GT ...

  8. Ubuntu 16.04源码编译安装nginx 1.10.0

    一.下载相关的依赖库 pcre 下载地址 http://120.52.73.43/jaist.dl.sourceforge.net/project/pcre/pcre/8.38/pcre-8.38.t ...

  9. Ubuntu 16.04 LTS 下安装 ibus-rime 输入法

    搜 Linux 下粤拼输入法的时候发现了 Rime,由于 fcitx 下的拼音输入体验实在不太好(搜狗是在我的电脑上完全坏掉了,调不出来,配置文件的问题一直没解决:谷歌是好过没有),于是安装 ibus ...

随机推荐

  1. linux基础2-cd、mkdir、touch、umask、chattr、lsattr、SUID/SGID/Sticky Bit

    一 cd : . 代表当前目录 .. 代表上一层目录 - 代表前一个工作目录 ~ 代表[目前用户身份]所在的自家目录 与cd效果相同 ~account 代表 account 这个用户的自家家目录 二m ...

  2. sql server 防 注入

    这里使用的是参数化 SqlParameter useremail = new SqlParameter("@useremail", user.user_Email); SqlPar ...

  3. Map的使用及遍历方式

    Java中Map遍历的四种方式 如果同时需要key和value推荐使用entrySet(第一种): 如果只是获取key,或者value,推荐使用keySet或者values方式(第二种): 如果需要在 ...

  4. Ubuntu打开系统监视器查看进程&资源等信息

    Ubuntu打开系统监视器查看进程&资源等信息 类似于Windows的任务管理器,Ubuntu也提供了系统监视器供用户管理进程及查看系统占用资源等 打开方式,终端输入如下命令: gnome-s ...

  5. CentOS7 内核优化 修改参数

    一:内核简介 内核是操作系统最基本的部分.它是为众多应用程序提供对计算机硬件的安全访问的一部分软件,这种访问是有限的,并且内核决定一个程序在什么时候对某部分硬件操作多长时间. 内核的分类可分为单内核和 ...

  6. 内网监控zabbix

    告警 告警方式:linkedsee 类型:使用脚本linkedsee.sh [root@zabbix-server ~]# cat linkedsee.sh #! /bin/bash SERVICE_ ...

  7. BZOJ 3439: Kpm的MC密码 (trie+dfs序主席树)

    题意 略 分析 把串倒过来插进trietrietrie上, 那么一个串的kpmkpmkpm串就是这个串在trietrietrie上对应的结点的子树下面的所有字符串. 那么像 BZOJ 3551/354 ...

  8. mybatis注解大全

    注解 目标 相对应的 XML 描述 @CacheNamespace 类 <cache> 为给定的命名空间 (比如类) 配置缓存. 属性:implemetation,eviction, fl ...

  9. ibatis调用存储过程(无返回参数)

    ibatis调用存储过程例子: java: getSqlMapClientTemplate().insert(sql, paraMap) ibatis xml: <parameterMap id ...

  10. Unable to copy file, Access to the path is denied

    Unable to copy file, Access to the path is denied http://stackoverflow.com/questions/7130136/unable- ...