【转载】在Ubuntu中安装OpenCV-Python(三)

和Fedora差不多,Ubuntu安装OpenCV基本上和它是一致的,所以在安装方法上基本上大体相同,有一些不一样的地方我会着重写出来,下面的步骤是在Ubuntu 16.04和18.04(64位)测试的。Ubuntu 18.04的一个主要变化是他们完全放弃了Python 2.7。如果需要,你仍然可以安装Python 2.7 ,但现在Python 3是操作系统上的默认设置。所以本教程主要针对于Python 3。

安装Python 3.6

让我们熟悉Ubuntu 18.04上的Python 3。要在Ubuntu 18.04上运行Python 3,必须显式调用python3。让我们先看看系统上安装了哪个版本:

	view plaincopy to clipboardprint?
 1. $ python3 --version   
 2. Python 3.6.5

现在,让我们启动一个Python3 shell来测试一下:

view plaincopy to clipboardprint?
 1. $ python3  
 2. >> print("OpenCV + Ubuntu 18.04!")   
 3. OpenCV + Ubuntu 18.04!  
 4. >> quit()

这很简单,所以我们接下来继续在Ubuntu18.04上安装OpenCV。

在Ubuntu 18.04上安装OpenCV依赖项:

所有步骤都将在终端/命令行中完成。 在我们开始之前,打开终端或通过SSH连接。从那里,我们需要使用apt-get 软件包管理器刷新/升级预安装的软件包/库:

	view plaincopy to clipboardprint?
 1. $ sudo apt-get update   
 2. $ sudo apt-get upgrade

接着安装开发人员工具:

	view plaincopy to clipboardprint?
 1. $ sudo apt-get install build-essential cmake unzip pkg-config

如果已经拥有 pkg-config安装在Ubuntu 18.04上,那么需要确保将其包含在install命令中以确保完整性。

接下来,我们需要安装一些特定于OpenCV的先决条件。OpenCV是图像处理/计算机视觉库,因此它需要能够加载标准图像文件格式,例如JPEG,PNG,TIFF等:

view plaincopy to clipboardprint? 
 1. $ sudo apt-get install libjpeg-dev libpng-dev libtiff-dev

现在让我们尝试安装 libjasper-dev:

	view plaincopy to clipboardprint?
 2. $ sudo apt-get install libjasper-dev

如果收到有关的错误 libjasper-dev丢失,然后按照以下说明进行操作:

	view plaincopy to clipboardprint?
 3. sudo add-apt-repository "deb http://security.ubuntu.com/ubuntu
    xenial-security main"   
 4. sudo apt update   
 5. sudo apt install libjasper1 libjasper-dev

接下来,我们安装视频包,需要以下软件包,以便可以使用相机流并处理视频文件:

view plaincopy to clipboardprint?
 6. $ sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev
    libv4l-dev   
 7. $ sudo apt-get install libxvidcore-dev libx264-dev

OpenCV的highgui模块依赖于GTK库进行GUI操作。highgui模块可以创建基本的GUI,以显示图像,处理敲击/鼠标单击以及创建滑块和轨迹栏。高级GUI应使用TK,Wx或QT构建,接下来安装GTK:

	view plaincopy to clipboardprint?
 8. $ sudo apt-get install libgtk-3-dev

我建议使用以下两个库来优化各种OpenCV功能:

	view plaincopy to clipboardprint?
 9. $ sudo apt-get install libatlas-base-dev gfortran

最后,我们的最后一个要求是安装Python 3库:

	view plaincopy to clipboardprint?
 1. $ sudo apt-get install python3.6-dev

下载官方的OpenCV来源

由于我们将继续在终端中工作,因此使用以下命令下载官方的OpenCV版本:

	view plaincopy to clipboardprint?
 1. $ CD〜   
 2. $ wget -O opencv.zip https://github.com/opencv/opencv/archive/3.4.4.zip

其次是 opencv_contrib模块,这个模块将非常有用,因为它包含了很多的OpenCV最重要的算法,contrib存储库包含SIFT,SURF等算法。过去,这些实现已包含在OpenCV 2.4的默认安装中。但是,它们从OpenCV 3+开始就被迁移了,contrib模块中包含正在积极开发的模块和/或已申请专利的模块(对于商业/工业用途不是免费的),SIFT和SURF算法便属于此类。:

	view plaincopy to clipboardprint?
 1. $ wget -O opencv_contrib.zip https://github.com/opencv/opencv_contrib/archive/3.4.4.zip

重要提示:OpenCV和 OpenCV_contrib版本必须相同。

现在,让我们解压缩存档文件:

view plaincopy to clipboardprint?
 1. $ unzip opencv.zip   
 2. $ unzip opencv_contrib.zip

【转载】在Ubuntu中安装OpenCV-Python(三)_第1张图片

现在,继续并重命名目录:

	view plaincopy to clipboardprint?
 1. $ mv opencv-3.4.4 opencv   
 2. $ mv opencv_contrib-3.4.4 opencv_contrib

配置Python 3环境

我们要配置Python 3开发环境的第一步是安装pip(Python软件包管理器)。

要安装pip,只需在终端中输入以下内容:

view plaincopy to clipboardprint?
 1. $ wget https://bootstrap.pypa.io/get-pip.py   
 2. $ sudo python3 get-pip.py

利用虚拟环境进行Python开发

我建议最好使用虚拟环境进行开发,为什么?

虚拟环境可以隔离地处理项目,而不必浪费资源消耗,例如VM和Docker映像

例如,也许有一个Python + OpenCV项目,它需要较旧版本的scikit-learn(v0.14),但如果我们想为所有较新的项目继续使用最新版本的scikit-learn(0.19)。

使用虚拟环境,就可以分别处理这两个软件版本依赖性,而仅仅使用Python的系统安装是无法实现的。

继续安装虚拟环境和虚拟环境包装器,现在:

	view plaincopy to clipboardprint?
 1. $ sudo pip install virtualenv virtualenvwrapper   
 2. $ sudo rm -rf〜/get-pip.py〜/ .cache / pip

要完成安装,我们需要更新我们的 〜/ .bashrc文件。

使用终端文本编辑器(如vi文件/vim文件或Nano文件)将以下行添加到~/.bashrc文件:

view plaincopy to clipboardprint?
 1. export WORKON_HOME=$HOME/.virtualenvs   
 2. exportVIRTUALENVWRAPPER_PYTHON=/usr/bin/python3
 3. source/usr/local/bin/virtualenvwrapper.sh

或者,可以直接通过bash命令追加行:

view plaincopy to clipboardprint?
 1. $ echo -e "\n# virtualenv and virtualenvwrapper" >> ~/.bashrc   
 2. $ echo "export WORKON_HOME=$HOME/.virtualenvs" >> ~/.bashrc   
 3. $ echo"export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3" >> ~/.bashrc   
 4. $echo "source /usr/local/bin/virtualenvwrapper.sh" >> ~/.bashrc

接下来,将~/.bashrc文件作为源文件:

	view plaincopy to clipboardprint?
 1. $ source ~/.bashrc

创建一个虚拟环境来保存OpenCV和其他软件包

我们现在可以为OpenCV创建Python3虚拟环境:

	view plaincopy to clipboardprint?
 1. $ mkvirtualenv cv -p python3  

此行只创建一个名为cv的Python3虚拟环境。 我们可以随心所欲地给你的环境命名,我们可以在系统上拥有任意数量的虚拟环境!让我们使用workon命令验证我们是否处于cv环境中:

	view plaincopy to clipboardprint?
 1. $ workon cv  

在环境中安装NumPy

让我们将第一个包安装到环境中:NumPy,NumPy是使用Python和OpenCV的必要,我们只需使用pip(在cv和Python虚拟环境处于激活状态时):

	view plaincopy to clipboardprint?
 1. $ pip install numpy

为Ubuntu 18.04配置和编译OpenCV

现在我们要搬家了,我们已经准备好编译和安装OpenCV。不过,在开始之前,让我们先确保我们处于cv虚拟环境中:

	view plaincopy to clipboardprint?
 1. $ workon cv

虚拟环境是激活的,并且非常重要的,这就是为什么我不断重申这一点。 如果在进入下一步之前没有在cv和Python虚拟环境中,那么构建文件将不会正确生成。

使用CMake配置OpenCV

让我们使用cmake命令设置我们的OpenCV版本:

	view plaincopy to clipboardprint?
 1. $ cd ~/opencv   
 2. $ mkdir build   
 3. $ cd build   
 4. $ cmake 
 5. -D CMAKE_BUILD_TYPE=RELEASE \  
 6. -D CMAKE_INSTALL_PREFIX=/usr/local \  
 7. -D WITH_CUDA=OFF \  
 8. -D INSTALL_PYTHON_EXAMPLES=ON \  
 9. -D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib/modules \  
 10. -D OPENCV_ENABLE_NONFREE=ON \  
 11. -D BUILD_EXAMPLES=ON ..

注意: 如果遇到与stdlib.h相关的问题:在本教程的cmake或make阶段没有此类文件或目录,则还需要在CMake中包括以下选项:-D ENABLE_PRECOMPILED_HEADERS = OFF。 在这种情况下,我建议删除构建目录,重新创建它,然后使用上面的选项重新运行cmake。 这将解决stdlib.h错误。

在Ubuntu 18.04上编译OpenCV

让我们使用make命令编译OpenCV,根据处理器/核心的数量,可以通过更改命令中的标志来缩短编译时间。我的计算机有4个内核,所以我使用的是-j4标志。 你可以更新数字或完全关闭该标志:

	view plaincopy to clipboardprint?
 1. $ make -j4  

【转载】在Ubuntu中安装OpenCV-Python(三)_第2张图片

此过程可能需要30分钟或更长时间,如果编译阻塞并挂起,则可能是由于线程占用情况造成的。 万一遇到此问题,只需删除构建目录,重新创建它,然后重新运行cmake和make。

安装和验证OpenCV

成功完成100%编译后,现在可以安装OpenCV:

view plaincopy to clipboardprint?
 1. $ sudo make install   
 2. $ sudo ldconfig

为了验证安装完成度,在终端中输入以下命令:

view plaincopy to clipboardprint?
 1. $ pkg-config --modversion opencv  
 2. 3.4.4

完成Python+OpenCV+Ubuntu 18.04安装

我们已经到了最后关头,请各位坚持下来。

此时,OpenCV的Python 3绑定位于以下文件夹中:

	view plaincopy to clipboardprint?
 1. $ ls /usr/local/python/cv2/python-3.6  
 2. cv2.cpython-36m-x86_64-linux-gnu.so

让我们将它们简单地重命名为cv2.so:

view plaincopy to clipboardprint?
 1. $ cd /usr/local/python/cv2/python-3.6   
 2. $ sudo mv cv2.cpython-36m-x86_64-linux-gnu.so cv2.so

我们的最后一个子步骤是将我们的OpenCV cv2.so绑定符号链接到我们的cv虚拟环境中:

	view plaincopy to clipboardprint?
 1. $ cd ~/.virtualenvs/cv/lib/python3.6/site-packages/   
 2. $ ln -s /usr/local/python/cv2/python-3.6/cv2.so cv2.so

在Ubuntu 18.04上测试OpenCV 3安装

要验证我们的OpenCV+Ubuntu安装是否完成,启动Python,导入OpenCV,然后查询版本(如果您同时安装了多个版本的OpenCV,这将非常有用):

	view plaincopy to clipboardprint?
 1. $ cd ~   
 2. $ workon cv   
 3. $ python   
 4. Python 3.6.5   
 5. [GCC 7.3.0] on linux   
 6. Type "help", "copyright", "credits" or "license" for more information. 
 7. >>> import cv2  
 8. >>> cv2.__version__   '3.4.4'  
 9. >>> quit()

至此,安装已经完全搞定,可以开始快乐的OpenCV之旅了。
查看文章汇总页https://blog.csdn.net/weixin_44237705/article/details/107864965
更多openvino技术信息可以入群交流~
【转载】在Ubuntu中安装OpenCV-Python(三)_第3张图片

你可能感兴趣的:(python,ubuntu,opencv,计算机视觉)