和Fedora差不多,Ubuntu安装OpenCV基本上和它是一致的,所以在安装方法上基本上大体相同,有一些不一样的地方我会着重写出来,下面的步骤是在Ubuntu 16.04和18.04(64位)测试的。Ubuntu 18.04的一个主要变化是他们完全放弃了Python 2.7。如果需要,你仍然可以安装Python 2.7 ,但现在Python 3是操作系统上的默认设置。所以本教程主要针对于Python 3。
让我们熟悉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
现在,继续并重命名目录:
view plaincopy to clipboardprint?
1. $ mv opencv-3.4.4 opencv
2. $ mv opencv_contrib-3.4.4 opencv_contrib
我们要配置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
现在我们要搬家了,我们已经准备好编译和安装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
此过程可能需要30分钟或更长时间,如果编译阻塞并挂起,则可能是由于线程占用情况造成的。 万一遇到此问题,只需删除构建目录,重新创建它,然后重新运行cmake和make。
成功完成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
要验证我们的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技术信息可以入群交流~