对于 Python 应用而言,可以使用 pip 安装软件包 [1] ,本文就以 Ubuntu 和 macOS 为例,展示安装 OpenCV 的过程。
需要首先说明的是,用 pip 安装的 OpenCV 包不影响日常使用,但 并不是 OpenCV.org 官方发布的。
在 PyPI 仓库中,共有 4 种 OpenCV 包可用于 pip 安装,安装时 仅能选择其中一个 。
对于桌面环境(如 Windows,macOS 和 Linux 系统),可以使用下面两个版本:
对于服务器/非 GUI 环境,可以使用下面两个 Headless 版本,不包括任何 GUI 功能,不能直接使用 cv2.imshow 等函数:
再次强调,不要同时安装多个版本,只可以安装其中一个版本。
对于 Ubuntu 的发行版而言,一般预装了 Python 2 和 Python 3,两个版本可谓天差万别。
而两个版本的 Python 都包括了不同的 pip 。一般使用 pip 时默认指 Python 2, pip3 则指 Python 3 中的 pip。
可以通过如下命令检查 Python 的版本:
比如我的电脑显示为:
表示 Ubuntu 中安装了 3.8.5 版本的 Python。
我们现在一般使用的是 Python 3,因此使用以下命令安装 pip3 :
在按要求输入账户密码后,将安装 pip3 和它的依赖项。
安装完成后,输入以下命令来检查安装是否正确:
结果将显示 pip3 的版本号:
类似显示意味着已成功安装 pip3 。
对于 Python 而言,可以构建一个虚拟环境(Virtual Environment),并在虚拟环境中安装不同的软件包。
我们这里不使用虚拟环境,直接将 opencv-contrib-python 安装到系统中(在下面的 macOS 中再演示虚拟环境安装):
经过一段时间后,显示安装了 opencv-contrib-python 及其他依赖包(如 numpy ):
由于 macOS 上自带的是 Python 2,需要自行安装 Python 3。同时,部分同学 (包括我!!)=可能安装过 Anaconda 或者 Pycharm 等软件,使得 macOS 下 Python 的版本管理混乱。我后面会专门写一篇文章介绍躲开这些坑的方法。
这里介绍使用 pip 将 OpenCV 安装到虚拟环境下的过程(重点是 macOS 上虚拟环境的配置)。
安装 virtualenv 和 virtualenvwrapper 到电脑中 [2] :
之后,需要在系统配置文件 ~/.bash_profile 中添加配置内容。使用 vim (或 nano 等应用)打开该文件:
将下列内容添加到文件末尾:
保存文件后,在终端中运行下面命令:
virtualenvwrapper 提供了一些常见的命令,可以用于配置虚拟环境。
我们这里创建一个名为 cv_test 的 Python3 的虚拟环境:
可以看到,此时命令行的最前面增加了一个括号,显示为 (cv_test) ,表示此时已在此虚拟环境下工作了。
下面将 opencv-contrib-python 安装到系统中:
静候片刻,即完成了 OpenCV 的安装。
无论 Ubuntu 还是 macOS,安装完成后,可以测试是否安装成功。
以 macOS 为例,首先进入对应的虚拟环境中:
然后在终端中运行 python3 ,进入 Python 3 的交互环境,通过导入 OpenCV 包,即可显示版本:
说明我们使用 pip 安装成功了 OpenCV,可供后续使用。
以下说明在Linux下Python和OpenCV结合安装的过程,Python要使用OpenCV模块,则必须导入OpenCV提供的包,所以要提供Python支持,首先在安装OpenCV前安装必要的组件,一般列表如下:1、gcc g++一般系统自带
2、cmake 编译OpenCV时使用,需要手动安装
3、pkg-config命令,一般系统自带,如果缺少,使用 yum -y install pkg-config 安装
4、Python 2.x,系统自带
5、NumPy 一个用于大型矩阵处理的库,这个必须!如果不安装则后面OpenCV安装后也编译不出来Python的模块,其他库可以后来安装
最后一步是安装OpenCV
在保证前4项没问题的情况下,开始安装NumPy模块,官网下载地址为:http://www.scipy.org/scipylib/download.html
进入SourceForge下载,地址为:https://sourceforge.net/projects/numpy/
直接点击Download即可下载,下载成功之后上传到Linux服务器,安装过程很简单,解压后直接安装即可(之前要确保python-devel已经安装)
unzip numpy-1.11.1.zip
cd numpy-1.11.1/
python setup.py install
另外numpy还可以去python官网下载:https://pypi.python.org/pypi/numpy
安装成功之后接下来进一步安装OpenCV,官方网站为:http://opencv.org/进入后点击DOWNLOADS来到下载界面:http://opencv.org/downloads.html,这里下载2.4.13的版本
下载完之后上传到Linux,执行接下来的安装:
unzip opencv-2.4.13.zip
cd opencv-2.4.13/
cmake -D WITH_GTK_2_X=ON -D CMAKE_INSTALL_PREFIX=/usr/local .
make# make -j4表示开4个线程来进行编译
make install
安装过程时间可能会有点长10~30分钟左右,编译完成之后OpenCV就安装到了指定的/usr/local下面的一些目录中,库文件就安装到了/usr/local/lib下,Python的模块安装位置是:/usr/local/lib/python2.7/site-packages,执行 ls /usr/local/lib/python2.7/site-packages/ 可以看到两个文件,一个是cv2.so一个是cv.py
这两个文件在刚才opencv-2.4.13编译的目录下面lib/下也存在着两个python模块文件,但是不幸的是现在并不能直接使用,原因是我们操作系统python依赖包的位置是/usr/lib/python2.7下,所以刚才如果编译到/usr下是直接可以用的,不过这个也不重要,只要我们将这两个文件复制到正确的目录下,那么就能正常使用OpenCV的功能了,执行: cp /usr/local/lib/python2.7/site-packages/cv* /usr/lib/python2.7/site-packages/ 复制过去之后进入python交互式界面执行 import cv2 没有报错则安装成功
可以写一个测试的小案例,在服务器上有一张图片是test.jpg现在简单的使用cv2模块解析成图像矩阵,然后再写入磁盘文件中,代码如下:
#!/usr/bin/python
# -*- coding:utf-8 -*-
import cv2
image = cv2.imread("test.jpg")
print image
cv2.imwrite("test1.jpg",image)
这里将原有的test.jpg生成test1.jpg,
执行 python cvtest.py 执行完后会发现输出好多矩阵变量,并且生成了test1.jpg文件
生成的文件有可能比原文件大也有可能小,具体根据图像来决定,现在查看一下图片内容,和之前是一样的
简单点说,这是两个完全不同内核的操作系统,很难说哪个更好,在桌面系统,winodws更受欢迎,而在服务器领域,linux得到更广泛的应用。Microsoft Windows,是美国微软公司研发的一套操作系统,它问世于1985年,起初仅仅是Microsoft-DOS模拟环境,后续的系统版本由于微软不断的更新升级,不但易用,也慢慢的成为家家户户人们最喜爱的操作系统。
Windows采用了图形化模式GUI,比起从前的DOS需要键入指令使用的方式更为人性化。随着电脑硬件和软件的不断升级,微软的Windows也在不断升级,从架构的16位、32位再到64位,甚至128位,系统版本从最初的Windows 1.0 到大家熟知的Windows 95、Windows 98、Windows ME、Windows 2000、Windows 2003、Windows XP、Windows Vista、Windows 7、Windows 8、Windows 8.1、Windows 10(预览版)和 Windows Server服务器企业级操作系统,不断持续更新,微软一直在致力于Windows操作系统的开发和完善。
Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的UNIX工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。
Linux操作系统诞生于1991 年10 月5 日(这是第一次正式向外公布时间)。Linux存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。
严格来讲,Linux这个词本身只表示Linux内核,但实际上人们已经习惯了用Linux来形容整个基于Linux内核,并且使用GNU 工程各种工具和数据库的操作系统。
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)