Linux下OpenCV 之安装使用(一)

【参考链接:ubuntu16.04安装opencv3.4_mjiansun的专栏-CSDN博客】

OpenCV是一个跨平台的计算机视觉库。OpenCV提供了众多语言的接口,其中就包含了Python。

OpenCV的官方下载网址是http://opencv.org/releases.html

安装版本:ubuntu20.04;

opencv:3.3.1

一、准备环境

1、安装准备

//软件源更新
sudo apt-get update     //更新包管理
sudo apt-get upgrade    //升级预装的包

2、安装gcc和g++开发环境

sudo apt-get install build-essential
sudo apt-get install g++-4.4    //安装g++ 4.4版本,4.4前面的-号可以删除
gcc  --version    //查看gcc版本
g++ --version    //查看g++版本

3、安装构建OpenCV的相关工具

//安装cmake、git和pkg-config
sudo apt-get install cmake git pkg-config 

4、安装常用图像工具包

//安装jpeg格式图像工具包
sudo apt-get install libjpeg8-dev 
//安装tif格式图像工具包
sudo apt-get install libtiff5-dev 
//安装JPEG-2000图像工具包
sudo apt-get install libjasper-dev 
//安装png图像工具包
sudo apt-get install libpng12-dev 

libjasper-dev和libgtk2.0-dev是OpenCV的两个很重要的包,OpenCV安装libjasper-dev依赖包出现如下错误:

(base) lutos@lutos-virtual-machine:~$ sudo apt-get install libjasper-dev
正在读取软件包列表... 完成
正在分析软件包的依赖关系树       
正在读取状态信息... 完成       
E: 无法定位软件包 libjasper-dev

解决方法:

sudo add-apt-repository "deb http://security.ubuntu.com/ubuntu xenial-security main"
sudo apt update
sudo apt install libjasper1 libjasper-dev

5、安装视频I/O包

sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev
//最后一个包的数字4后面是l
sudo apt-get install libxvidcore-dev libx264-dev

6、安装gtk

//opencv的GUI是highgui,其依赖于GTK库,需要安装gtk
sudo apt-get install libgtk-3-dev    //或者
sudo apt-get install libgtk2.0-dev

7、安装优化函数包

sudo apt-get install libatlas-base-dev gfortran    //用于优化OpenCV内部函数,如矩阵操作

安装完编译所依赖的packages之后,下一步就是开始编译了。不过还需要在解压后的OpenCV-xxxx文件夹内建立一个build文件夹,编译生成的makefiles、project files、object files和output files,完成后就可以开始正式的编译了。

二、开始安装

1、创建编译文件夹

在解压的opencv-xxx目录下创建build文件夹,并从终端进入build文件夹

cd /……/opencv-3.3.1/build    //……是安装路径

2、Cmake配置编译

可通过cmake命令或者cmake-gui界面配置,建议安装cmake-gui进行编译安装:

sudo cmake-gui

参考【Ubuntu18:使用CMake-gui编译OpenCV3源码的详细过程_Flag_ing的博客-CSDN博客】

Linux下OpenCV 之安装使用(一)_第1张图片

选择源码及二进制文件位置,点击Configure按钮,选择Unix Makefiles,其他默认,再点击Finish。

configuring done之后, 

在这里要找到这几个地方进行修改;

1、勾选上BUILD_opencv_world;

2、在CMAKE_BUILD_TYPE后填上:RELEASE;

3、如果是安装的opencv-contrib版本,需要在OPENCV_EXTRA_MODULES_PATH后填上opencv-contrib/modules的路径,比如:/home/wsx/opencv/opencv/opencv_contrib/modules

拓展库可去GitHub找

https://github.com/opencv/opencv_contrib/tree

再次点击Configure按钮,完成后,再点击Generate按钮。

若用cmake命令配置,可参考如下(但容易出问题)

cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local ..
//CMAKE_BUILD_TYPE:    build的类型,有Release和Debug两种
//CMAKE_INSTALL_PREFIX:    指定想要安装OpenCV的文件夹目录,一般就用/usr/local
//最后面有两个点
//其他配置
cmake -D WITH_TBB=ON -D BUILD_NEW_PYTHON_SUPPORT=ON -D WITH_V4L=ON -D WITH_QT=ON -D WITH_OPENGL=ON ..

3、make编译

通过make编译结束后在bulid的lib目录下生成*.so库文件。

sudo make
或者
sudo make -j7    //同时使用7个线程。为了加快编译速度,一般会使用多线程的方法

//查看本机支持多少线程数,终端中输入
nproc

等待漫长的编译过程。出现报错就按照提示逐一解决。


出现错误及解决办法

1、报错 error: 'CODEC_FLAG_GLOBAL_HEADER' was not declared in this scope

参考【Ubuntu 源码安装opencv320 报错 error: 'CODEC_FLAG_GLOBAL_HEADER' was not declared in this scope_guo_lei_lamant的博客-CSDN博客】

找到报错提示的位置,在 /opt/opencv/opencv-3.2.0/modules/videoio/src/cap_ffmpeg_impl.hpp 里最顶端添加:

#define AV_CODEC_FLAG_GLOBAL_HEADER (1 << 22)
#define CODEC_FLAG_GLOBAL_HEADER AV_CODEC_FLAG_GLOBAL_HEADER
#define AVFMT_RAWPICTURE 0x0020

4、安装

make成功后,就可以进行安装

sudo make install

库文件装到了/usr/local/lib下

至此,OpenCV的编译安装过程就结束了。

5、设置环境变量

接下来可能还需要配置一些编译环境,添加库。

1、动态库(共享库)配置。添加库路径,并更新系统库

//为动态库(共享库)的配置
sudo /bin/bash -c 'echo "/usr/local/lib" > /etc/ld.so.conf.d/opencv.conf'

//加载使配置生效,
sudo ldconfig

关于动态静态库可参考【静态库和动态库的区别 - 阿玛尼迪迪 - 博客园】

2、配置opencv的PKG-CONFIG环境

//将/usr/local/lib/pkgconfig路径加入到PKG_CONFIG_PATH中
sudo gedit /etc/bash.bashrc

//在末尾添加如下语句,然后保存,退出
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig 
export PKG_CONFIG_PATH

说明2:

#1、添加库路径(创建opencv.conf文件)
//打开配置文件
sudo gedit /etc/ld.so.conf.d/opencv.conf
//打开可能是个空文件,不用管,在文件末尾添加
/usr/local/lib
//保存后,执行如下命令使刚才的配置路径生效
sudo ldconfig    //更新系统库缓存

#2、添加环境变量,可通过/etc/profile、/etc/bash.bashrc、~/.bashrc等三种方式配置
//配置bash
sudo gedit /etc/bash.bashrc
//在最末尾添加
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig 
export PKG_CONFIG_PATH
//保存,执行以下命令使配置生效
source /etc/bash.bashrc
//查看opencv是否安装成功
pkg-config --cflags opencv
pkg-config --libs opencv
//查看linux下的opencv安装版本
pkg-config opencv --modversion

//测试XXX.cpp实现显示图像,输入命令
g++ XXX.cpp -o XXX `pkg-config --cflags --libs opencv`

至此,所有配置都已经完成。

如果到现在你还没遇到任何问题,那么恭喜你,你已经成功在Linux上安装了OpenCV。

下面用一个小程序测试一下

cd到opencv-3.X.X/samples/cpp/example_cmake目录下,可以看到这个目录里官方已经给出了一个cmake的example,我们来测试下

cmake .    //加上sudo
make    //加上sudo
./opencv_example

即可看到打开了摄像头,在左上角有一个hello opencv,即表示配置成功。

6、卸载

在build路径下打开终端,依次执行

sudo make uninstall

cd ..

sudo rm -r build

sudo rm -r /usr/local/include/opencv2 /usr/local/include/opencv /usr/include/opencv /usr/include/opencv2 /usr/local/share/opencv /usr/local/share/OpenCV /usr/share/opencv /usr/share/OpenCV /usr/local/bin/opencv* /usr/local/lib/libopencv*

你可能感兴趣的:(opencv,ubuntu,python)