ubuntu 18.04 python 3.7安装opencv4.2.0 和 报错解决方案(libgtk2.0-dev 报错)

一: ubuntu 18.04 python 3.7安装opencv4.2.0、

Ubuntu下,OpenCV的安装方式有两种:

  • 1.通过apt-get 安装opencv-python 

          conda install opencv=4.2.0 -c conda-forge  


     conda install -c conda-forge/label/gcc7 opencv
     conda install -c conda-forge/label/broken opencv
     conda install -c conda-forge/label/cf201901 opencv
     conda install -c conda-forge/label/cf202003 opencv

          如果出现问题就重新创建一个环境,再执行该代码。

       备注:(conda search opencv )或者conda search opencv -c conda-forge 查询conda中支持的包。

 

  • 2.从源码构建

方式1.很简单: 如果你只是在python中简单使用opencv,首选此种方式安装,如果你需要在其他项目中编译引用opencv,建议从源码构建安装;还有一点:python-opencv里的代码可能没有源码更新的及时,从源码构建虽然复杂,不过稳定些、可控性更强。下文主要介绍通过源码构建安装OpenCV。

1.安装依赖包

[required] sudo apt-get install build-essential
[required] sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
[optional] sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev

安装python2、python3支持模块

可选、譬如你可以只打算在python3里用opencv,那么就忽略python2的模块安装。

# 安装python2支持
sudo apt-get install python-dev python-numpy
# 安装python3支持
sudo apt-get install python3-dev python3-numpy

GTK支持(图形界面库)

# 安装gtk2支持
sudo apt-get install libgtk2.0-dev
# 安装gtk3支持
sudo apt-get install libgtk-3-dev

2.下载OpenCV 4.2.0和OpenCV Contrib 4.2.0 

OpenCV 4.2.0:
https://github.com/opencv/opencv/releases/tag/4.2.0

OpenCV Contib 4.2.0:
https://github.com/opencv/opencv_contrib/releases/tag/4.2.0

假如将两个压缩包保存到/home/username/opencv4.2/,进行解压;

另外,在编译的时候需要ippicv_2019_lnx_intel64_general_20180723.tgz这个文件,下载的时候会特别慢。这里提供一个链接,参考其中的第1,2两个步骤进行下载与配置;

如,我将下载得到的文件放在了opencv4.2这个文件夹中,修改成"/home/username/opencv4.2/";

目录结构如下:

/home/username/opencv4.2/目录下有
  opencv-4.2.0/
  opencv_contrib-4.2.0/
  ippicv_2019_lnx_intel64_general_20180723.tgz

3.  Building OpenCV from Source Using CMake  (使OpenCV能CUDA加速)

支持使用CUDA对DNN模块进行加速计算,所以这里配置CUDA

默认位置安装,则会安装到系统如下目录:

  • /usr/local/bin
  • /usr/local/lib
  • /usr/local/share

bin下的可执行文件:ubuntu 18.04 python 3.7安装opencv4.2.0 和 报错解决方案(libgtk2.0-dev 报错)_第1张图片。lib是库文件,主要是以libopencv开头的so文件、文件夹:pkgconfig、python2.x、python3.x(pkgconfig里存放的是opencv4.pc);share里就两个文件夹:OpenCV和licenses。 

本文安装在/usr/local/opencv4 (即为OPENCV_DIR_PATH)下 (非默认位置安装)。

cd /home/username/opencv4.2/opencv-4.2.0
mkdir build
cd build
sudo cmake -D CMAKE_INSTALL_PREFIX=/usr/local/opencv4\
    -D CMAKE_BUILD_TYPE=RELEASE\
    -D INSTALL_PYTHON_EXAMPLES=ON\
    -D INSTALL_C_EXAMPLES=ON\
    -D OPENCV_EXTRA_MODULES_PATH=/modules\
    -D BUILD_EXAMPLES=ON\
    -D OPENCV_GENERATE_PKGCONFIG=ON ..

4. 使用make构建库

查看CPU核心数:

nproc

如,我的CPU核心数为12,执行

cd /home/username/opencv4.2/opencv-4.2.0/build
sudo make -j12

等待一段时候,出现Configuration Done即可,

执行:

sudo make install

【非默认位置安装,需设置扫描路径】步骤如下:

项目编译后产生的可执行文件、库文件、头文件需要被别的项目引用,扫描路径怎么设置?也有两种方式:

  • 1.复制opencv4.pc至系统pkgconfig文件夹中
  • 2.将opencv4.pc所在目录设定到环境变量PKG_CONFIG_PATH

OpenCV编译后会在/OPENCV_DIR_PATH/lib/pkgconfig/下产生opencv.pc文件.

prefix定义了编译安装的主目录;exec_prefix则是可执行文件目录;然后还有include文件夹目录等等。

通过/usr/bin/下的pkg-config命令,会扫描所有系统/usr/lib/下和环境变量PKG_CONFIG_PATH所定义的所有pkgconfig文件夹,这些文件夹都是存放各个程序编译信息.pc文件,pkg-config扫描后,这些.pc文件保存的编译信息就能被其他项目/程序获取。(.pc文件主要定义了安装程序的主目录prefix、可执行程序目录exec_prefix、lib目录libdir、包含目录includedir、sharedlibdir等,有点类似于环境变量,不过更多是为了程序编译服务的)

# 查看所有系统将会扫描的pkgconfig文件夹路径;
pkg-config --variable pc_path pkg-config
#根据opencv.pc查看其有那些路径变量
pkg-config --print-variables opencv
#查看opencv.pc中prefix变量的值(即其编译安装的位置)
pkg-config --variable prefix opencv

自定义安装,我们会在/OPENCV_DIR_PATH/lib/pkgconfig/下发现opencv.pc。

两种配置方式选择

   4.1. 复制opencv.pc至系统pkgconfig文件夹中 理论上可以将opencv.pc复制到任意一个 pkg-config --variable pc_path pkg-config 列出的pkgconfig文件夹中,不过最好复制到/usr/local/lib/pkgconfig/下。 例:

cd /OPENCV_DIR_PATH/lib/pkgconfig
sudo cp opencv.pc  /usr/lib/pkgconfig

Ubuntu18.04安装后,系统自带了opencv3.2.0,默认将opencv.pc存放在/usr/lib/x86_64-linux-gnu/pkgconfig/下,如果需要将opencv.pc复制到这里,可以先将系统自带的opencv.pc备份下,然后再cp过去。 

  4.2.将opencv.pc所在目录设定到环境变量PKG_CONFIG_PATH

#修改bash.bashrc文件
sudo vim /etc/bash.bashrc
# 在最后加入:
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/OPENCV_DIR_PATH/lib/pkgconfig
export PKG_CONFIG_PATH
source /etc/bash.bashrc
#查看变量是否生效
echo $PKG_CONFIG_PATH

5.  配置环境变量两项

5.1 设置Python的cv2包的环境变量

1.设置OpenCV的环境变量(可选,不建议) 如果编译时默认安装的位置是系统bin和lib文件夹、所以可执行文件和lib文件都可以立即执行。譬如:opencv_version这个可执行程序,由于其路径属于系统路径:usr/bin/opencv_version,故可以在任意shell窗口中直接运行,自定义位置安装的则不可以。故可以为其设置环境变量,不过通常也不需要,原因有两点:1.opencv的可执行命令较少2.通常我们编译OpenCV并不是为了得到其可执行文件,而是为了得到lib文件夹中的.so库文件,供其他程序/项目直接引用。

2.设置Python的cv2包的环境变量(必须) 自定义位置编译时,可能会出现一种情况,编译成功、安装成功,OpenCV的c++demo也可以正常运行,但是进入python环境import cv2时会发现找不到包。因为自定义编译时,生成的cv2模块路径是: /OPENCV_DIR_PATH/lib/python3.6/dist-packages 需要将此路径设置加入环境变量PYTHONPATH中,以便于python环境中import时可以找到cv2。

# 新增PYTHONPATH环境变量
sudo vim ~/.bashrc
export PYTHONPATH=$PYTHONPATH:/OPENCV_DIR_PATH//lib/python3.6/dist-packages
#如:export PYTHONPATH=$PYTHONPATH:/usr/local/opencv/opencv-3.4.8/lib/python3.6/dist-packages
source ~/.bashrc

然后,我们就可以正常在python环境中import cv2了。

 

5.2将opencv的lib路径添加到配置

主要是将opencv的lib路径添加到配置,能被系统扫描到,有什么用?其他项目,如darknet构建时需要用到opencv的lib,就可以直接引用到。

sudo gedit /etc/ld.so.conf.d/opencv.conf

将你opencv安装目录/lib路径写入opencv.conf,并保存。如果你编译时是默认安装,路径是: /usr/local/lib。添加如下内容,并保存:

/usr/local/lib


配置库

sudo ldconfig


重启系统 (备选)

reboot


测试安装情况,查看安装版本
 

pkg-config opencv4 --modversion 
# or
pkg-config --cflags --libs opencv4

ubuntu 18.04 python 3.7安装opencv4.2.0 和 报错解决方案(libgtk2.0-dev 报错)_第2张图片

若报错如下信息:

Package opencv was not found in the pkg-config search path.
Perhaps you should add the directory containing `opencv.pc'
to the PKG_CONFIG_PATH environment variable
No package 'opencv' found

执行:sudo apt install libopencv-dev 

 

7、卸载openCV

  如果安装出现了百度不能解决的问题。最好的办法就是卸载重新装一次。

  // 1. 删除openCV4.conf

1 cd /etc/ld.so.conf.d/
2 sudo rm opencv4.conf

  // 2.卸载

1 cd
2 cd ./OpenCV-4.1.1/build
3 sudo make uinstall
sudo rm -r /usr/local/include/opencv4 
sudo rm -r /usr/local/include/opencv 
sudo rm -r /usr/include/opencv 
sudo rm -r /usr/include/opencv4 
sudo rm -r /usr/local/share/opencv 
sudo rm -r /usr/local/share/OpenCV 
sudo rm -r /usr/share/opencv 
sudo rm -r /usr/share/OpenCV 
sudo rm -r /usr/local/bin/opencv* 
sudo rm -r /usr/local/lib/libopencv*
sudo rm -r /usr/local/lib/pkgconfig/opencv4.pc
sudo rm -r /usr/local/lib/cmake/opencv4

二:报错解决方案

1. 安装 libgtk2.0-dev

sudo apt-get install libgtk2.0-dev

报错如下:

The following packages have unmet dependencies:
 libgtk2.0-dev : Depends: libpango1.0-dev (>= 1.20) but it is not going to be installed
                        Depends: libcairo2-dev (>= 1.6.4-6.1) but it is not going to be installed

解决方案 一:

1、修改配置Software Sources:

        ubuntu 中打开Software & Updates(界面如下), 勾选Important security updates 和Recommended updates 选项。

ubuntu 18.04 python 3.7安装opencv4.2.0 和 报错解决方案(libgtk2.0-dev 报错)_第3张图片

 

2、 更新apt-get,并安装libgtk2.0-dev

sudo apt-get update

sudo apt-get install libgtk2.0-dev

 

2、安装 libjasper-dev:

在安装libjasper-dev依赖包的过程中错误如下:


E: Unable to locate package libjasper-dev

执行:

sudo add-apt-repository "deb http://security.ubuntu.com/ubuntu xenial-security main"
sudo apt-get update


再次执行安装依赖包;

你可能感兴趣的:(ML,&,CV)