Ubuntu 18.04安装OpenCV4.0和环境配置

(2019-10-14更新,支持直接安装python版本)html

1 安装前准备

1.1 安装依赖

  • 安装cmake(编译器)和依赖库
$ sudo apt-get install cmake #若是已经安装过cmake,则该步骤省略
$ sudo apt-get install build-essential libgtk2.0-dev libgtk-3-dev libavcodec-dev libavformat-dev libjpeg-dev libswscale-dev libtiff5-dev
  • 支持python
# python3支持
$ sudo apt install python3-dev python3-numpy
# streamer支持
$ sudo apt install libgstreamer-plugins-base1.0-dev libgstreamer1.0-dev
# 可选的依赖
$ sudo apt install libpng-dev libopenexr-dev libtiff-dev libwebp-dev

1.2 下载源文件

能够在官网下载相应版本的OpenCV,主要有SourceGitHub方式下载。python

Sources源文件:
由于官方版本是git上的,有时候可能出现下载失败的状况,全部我将官网下载的源文件分享到百度网盘连接https://pan.baidu.com/s/1Bu4xOiz8zWU_R8Me0T_SIg,提取码:s4sy。linux

或者经过 GitHub进行下载。c++

2 安装过程

  1. 将zip文件解压到当前目录
$ unzip opencv-4.0.0.zip -d .
  1. 进入解压后的文件夹
$ cd opencv-4.0.0/
  1. 建立一个编译文件夹build,并进入。
$ mkdir build
$ cd build/
  1. cmake一下
    这里我修改了安装路径为/usr/local/opencv4,能够本身修改到本身须要的位置,若是该命令中不加-D CMAKE_INSTALL_PREFIX=/usr/local/opencv4,则默认各部分分别安装在/usr/local/目录的include/ bin/ lib/3个文件夹下.
$ cmake -D CMAKE_BUILD_TYPE=Release -D OPENCV_GENERATE_PKGCONFIG=YES -D CMAKE_INSTALL_PREFIX=/usr/local/opencv4 ..

命令说明git

  • -D OPENCV_GENERATE_PKGCONFIG=YESOpenCV4以上版本默认不使用pkg-config,该编译选项开启生成opencv4.pc文件,支持pkg-config功能。
  • -D CMAKE_INSTALL_PREFIX=/usr/local/opencv4:指定安装目录。

这里cmake命令执行会下载ippicv,须要等待比较长时间才能下载完成。

该cmake命令的结果里能够查看是否支持Python:web

--   Python 2:
--     Interpreter:                 /usr/bin/python2.7 (ver 2.7.6)
--     Libraries:                   /usr/lib/x86_64-linux-gnu/libpython2.7.so (ver 2.7.6)
--     numpy:                       /usr/lib/python2.7/dist-packages/numpy/core/include (ver 1.8.2)
--     packages path:               lib/python2.7/dist-packages
--
--   Python 3:
--     Interpreter:                 /usr/bin/python3.4 (ver 3.4.3)
--     Libraries:                   /usr/lib/x86_64-linux-gnu/libpython3.4m.so (ver 3.4.3)
--     numpy:                       /usr/lib/python3/dist-packages/numpy/core/include (ver 1.8.2)
--     packages path:               lib/python3.4/dist-packages

代表已经创建了Python绑定。(若是只选择了python3,则该输出结果里只有python3部分)shell

  1. 进行make编译,须要好久,静静等待。
$ make -j6 	# runs 6 jobs in parallel
  1. 进行make install安装
$ sudo make install

安装完成
vim

3 OpenCV配置环境

3.1 pkg-config环境

配置OpenCV 的 pgk-config环境api

  1. 找到opencv4.pc文件所在目录:
$ sudo find / -iname opencv4.pc
[sudo] password for ywq: 
/usr/local/opencv4/lib/pkgconfig/opencv4.pc
find: ‘/run/user/1000/gvfs’: Permission denied
/home/ywq/Downloads/OpenCV/opencv-4.0.0/build/unix-install/opencv4.pc
  1. /usr/local/opencv4/lib/pkgconfig/路径加入PKG_CONFIG_PATH
$ sudo vim /etc/profile.d/pkgconfig.sh

在文件中加入下面一行:bash

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

保存退出后,使用命令激活:

$source /etc/profile
  1. 验证是否配置成功:
$ pkg-config --libs opencv4
-L/usr/local/opencv4/lib -lopencv_ml -lopencv_dnn -lopencv_video -lopencv_stitching -lopencv_objdetect -lopencv_calib3d -lopencv_features2d -lopencv_highgui -lopencv_videoio -lopencv_imgcodecs -lopencv_flann -lopencv_photo -lopencv_gapi -lopencv_imgproc -lopencv_core

3.2 动态库环境

配置OpenCV动态库环境——程序执行时加载动态库*.so的路径。

$ sudo vim /etc/ld.so.conf.d/opencv4.conf

在该文件(多是空文件)末尾加上:

/usr/local/opencv4/lib

再执行如下命令使刚才配置的路径生效:

$ sudo ldconfig

3.3 python-opencv环境

找到编译好的python cv库:

$sudo find / -iname cv2*.so
/home/ywq/Downloads/opencv-4.1.1/build/lib/python3/cv2.cpython-35m-x86_64-linux-gnu.so
/usr/local/opencv4/lib/python3.5/dist-packages/cv2/python-3.5/cv2.cpython-35m-x86_64-linux-gnu.so

cv2.cpython-35m-x86_64-linux-gnu.so就是编译好的python3的opencv库,咱们把它复制到对应python解释器的/path/to/dist-packages/(系统自带的python解释器)和/path/to/site-packages(用户安装的python解释器)目录下,以后就能在该python解释器中使用python-opencv库。

  • 连接到系统自带的python3解释器中:
$ sudo ln -s /usr/local/opencv4/lib/python3.5/dist-packages/cv2/python-3.5/cv2.cpython-35m-x86_64-linux-gnu.so /usr/lib/python3/dist-packages/cv2.so
  • 连接到Anaconda建立的虚拟环境python3解释器中:
$ ln -s /usr/local/opencv4/lib/python3.5/dist-packages/cv2/python-3.5/cv2.cpython-35m-x86_64-linux-gnu.so ~/anaconda3/lib/python3.7/site-packages/cv2.so

4 测试OpenCV

环境配置完成,对咱们安装的OpenCV进行测试:

cd 到/opencv-4.0.0/samples/cpp/example_cmake目录下,查看当前目录内容:

$ ls -l
total 12
-rw-rw-r-- 1 ywq ywq 1016 11月 18  2018 CMakeLists.txt
-rw-rw-r-- 1 ywq ywq 1119 11月 18  2018 example.cpp
-rw-rw-r-- 1 ywq ywq  294 7月  30 15:31 Makefile

有两种方式进行测试:

4.1 经过Makefile测试

由于OpenCV 4.0须要C++11支持,且生成的pkg-config文件名为opencv4.pc,因此须要对当前目录下的Malefile文件进行修改:

$ vim Makefile

修改后的内容为:

CXX ?= g++
 
CXXFLAGS += -c -std=c++11 -Wall $(shell pkg-config --cflags opencv4)
LDFLAGS += $(shell pkg-config --libs --static opencv4)

all: opencv_example

opencv_example: example.o; $(CXX) $< -o $@ $(LDFLAGS)

%.o: %.cpp; $(CXX) $< -o $@ $(CXXFLAGS)

clean: ; rm -f example.o opencv_example

执行make命令生成可执行文件opencv_example

$ make
g++ example.cpp -o example.o -c -std=c++11 -Wall -I/usr/local/opencv4/include/opencv4/opencv -I/usr/local/opencv4/include/opencv4
g++ example.o -o opencv_example -L/usr/local/opencv4/lib -lopencv_ml -lopencv_dnn -lopencv_video -lopencv_stitching -lopencv_objdetect -lopencv_calib3d -lopencv_features2d -lopencv_highgui -lopencv_videoio -lopencv_imgcodecs -lopencv_flann -lopencv_photo -lopencv_gapi -lopencv_imgproc -lopencv_core -ldl -lm -lpthread -lrt

运行生成的文件opencv_example:

$ ./opencv_example

电脑打开摄像头,配置成功。

4.2 经过Cmake测试

由于咱们更改了opencv的安装路径(/usr/local/opencv4),因此测试前咱们须要在CMakeLists.txt文件的14行find_package(OpenCV REQUIRED)前面加上

set(OpenCV_DIR /usr/local/opencv4/lib/cmake/opencv4)

不然执行$ cmake .命令时会报错

修改后,执行命令:

$ mkdir build && cd build
$ cmake ..
$ make
$ ./opencv_example

4.3 python-opencv测试

前面已经将Python-opencv库连接到系统自带python3中,因此简单的测试以下:

$ python3
Python 3.5.2 (default, Oct  8 2019, 13:06:37) 
[GCC 5.4.0 20160609] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import cv2 as cv
>>> print(cv.__version__)
4.1.1